<!DOCTYPE html>
<html lang="zh-Hans">
<head>
  <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=2">
<meta name="theme-color" content="#222">
<meta name="generator" content="Hexo 6.0.0">
  <link rel="apple-touch-icon" sizes="180x180" href="/images/apple-touch-icon-next.png">
  <link rel="icon" type="image/png" sizes="32x32" href="/images/favicon-32x32-next.png">
  <link rel="icon" type="image/png" sizes="16x16" href="/images/favicon-16x16-next.png">
  <link rel="mask-icon" href="/images/logo.svg" color="#222">

<link rel="stylesheet" href="/css/main.css">


<link rel="stylesheet" href="/lib/font-awesome/css/all.min.css">

<script id="hexo-configurations">
    var NexT = window.NexT || {};
    var CONFIG = {"hostname":"malossov.top","root":"/","scheme":"Pisces","version":"7.8.0","exturl":false,"sidebar":{"position":"right","display":"always","padding":18,"offset":12,"onmobile":false},"copycode":{"enable":false,"show_result":false,"style":null},"back2top":{"enable":true,"sidebar":false,"scrollpercent":false},"bookmark":{"enable":false,"color":"#222","save":"auto"},"fancybox":false,"mediumzoom":false,"lazyload":false,"pangu":false,"comments":{"style":"tabs","active":null,"storage":true,"lazyload":false,"nav":null},"algolia":{"hits":{"per_page":10},"labels":{"input_placeholder":"Search for Posts","hits_empty":"We didn't find any results for the search: ${query}","hits_stats":"${hits} results found in ${time} ms"}},"localsearch":{"enable":false,"trigger":"auto","top_n_per_article":1,"unescape":false,"preload":false},"motion":{"enable":true,"async":false,"transition":{"post_block":"fadeIn","post_header":"slideDownIn","post_body":"slideDownIn","coll_header":"slideLeftIn","sidebar":"slideUpIn"}}};
  </script>

  <meta name="description" content="是很菜的人的很菜的博客捏，无栈工程学徒ing。">
<meta property="og:type" content="website">
<meta property="og:title" content="MAL&#39;S_BLOG">
<meta property="og:url" content="https://malossov.top/index.html">
<meta property="og:site_name" content="MAL&#39;S_BLOG">
<meta property="og:description" content="是很菜的人的很菜的博客捏，无栈工程学徒ing。">
<meta property="og:locale">
<meta property="article:author" content="MALossov">
<meta property="article:tag" content="菜">
<meta property="article:tag" content="胡搞瞎搞">
<meta name="twitter:card" content="summary">

<link rel="canonical" href="https://malossov.top/">


<script id="page-configurations">
  // https://hexo.io/docs/variables.html
  CONFIG.page = {
    sidebar: "",
    isHome : true,
    isPost : false,
    lang   : 'zh-Hans'
  };
</script>

  <title>MAL'S_BLOG</title>
  






  <noscript>
  <style>
  .use-motion .brand,
  .use-motion .menu-item,
  .sidebar-inner,
  .use-motion .post-block,
  .use-motion .pagination,
  .use-motion .comments,
  .use-motion .post-header,
  .use-motion .post-body,
  .use-motion .collection-header { opacity: initial; }

  .use-motion .site-title,
  .use-motion .site-subtitle {
    opacity: initial;
    top: initial;
  }

  .use-motion .logo-line-before i { left: initial; }
  .use-motion .logo-line-after i { right: initial; }
  </style>
</noscript>

</head>

<body itemscope itemtype="http://schema.org/WebPage">
  <div class="container use-motion">
    <div class="headband"></div>

    <header class="header" itemscope itemtype="http://schema.org/WPHeader">
      <div class="header-inner"><div class="site-brand-container">
  <div class="site-nav-toggle">
    <div class="toggle" aria-label="Toggle navigation bar">
      <span class="toggle-line toggle-line-first"></span>
      <span class="toggle-line toggle-line-middle"></span>
      <span class="toggle-line toggle-line-last"></span>
    </div>
  </div>

  <div class="site-meta">

    <a href="/" class="brand" rel="start">
      <span class="logo-line-before"><i></i></span>
      <h1 class="site-title">MAL'S_BLOG</h1>
      <span class="logo-line-after"><i></i></span>
    </a>
      <p class="site-subtitle" itemprop="description">Welcome to Malossov's Personal Archieve!</p>
  </div>

  <div class="site-nav-right">
    <div class="toggle popup-trigger">
    </div>
  </div>
</div>




<nav class="site-nav">
  <ul id="menu" class="main-menu menu">
        <li class="menu-item menu-item-主页">

    <a href="/" rel="section"><i class="fa fa-home fa-fw"></i>主页</a>

  </li>
        <li class="menu-item menu-item-标签">

    <a href="/tags/" rel="section"><i class="fa fa-tags fa-fw"></i>标签</a>

  </li>
        <li class="menu-item menu-item-分类">

    <a href="/categories/" rel="section"><i class="fa fa-th fa-fw"></i>分类</a>

  </li>
        <li class="menu-item menu-item-归档">

    <a href="/archives/" rel="section"><i class="fa fa-archive fa-fw"></i>归档</a>

  </li>
        <li class="menu-item menu-item-友链">

    <a href="/links/" rel="section"><i class="fa fa-link fa-fw"></i>友链</a>

  </li>

    <li> <a title="把这个链接拖到你的Chrome收藏夹工具栏中" href='javascript:(function() {
    function c() {
        var e = document.createElement("link");
        e.setAttribute("type", "text/css");
        e.setAttribute("rel", "stylesheet");
        e.setAttribute("href", f);
        e.setAttribute("class", l);
        document.body.appendChild(e)
    }

    function h() {
        var e = document.getElementsByClassName(l);
        for (var t = 0; t < e.length; t++) {
            document.body.removeChild(e[t])
        }
    }

    function p() {
        var e = document.createElement("div");
        e.setAttribute("class", a);
        document.body.appendChild(e);
        setTimeout(function() {
            document.body.removeChild(e)
        }, 100)
    }

    function d(e) {
        return {
            height : e.offsetHeight,
            width : e.offsetWidth
        }
    }

    function v(i) {
        var s = d(i);
        return s.height > e && s.height < n && s.width > t && s.width < r
    }

    function m(e) {
        var t = e;
        var n = 0;
        while (!!t) {
            n += t.offsetTop;
            t = t.offsetParent
        }
        return n
    }

    function g() {
        var e = document.documentElement;
        if (!!window.innerWidth) {
            return window.innerHeight
        } else if (e && !isNaN(e.clientHeight)) {
            return e.clientHeight
        }
        return 0
    }

    function y() {
        if (window.pageYOffset) {
            return window.pageYOffset
        }
        return Math.max(document.documentElement.scrollTop, document.body.scrollTop)
    }

    function E(e) {
        var t = m(e);
        return t >= w && t <= b + w
    }

    function S() {
        var e = document.createElement("audio");
        e.setAttribute("class", l);
        e.src = i;
        e.loop = false;
        e.addEventListener("canplay", function() {
            setTimeout(function() {
                x(k)
            }, 500);
            setTimeout(function() {
                N();
                p();
                for (var e = 0; e < O.length; e++) {
                    T(O[e])
                }
            }, 15500)
        }, true);
        e.addEventListener("ended", function() {
            N();
            h()
        }, true);
        e.innerHTML = " <p>If you are reading this, it is because your browser does not support the audio element. We recommend that you get a new browser.</p> <p>";
        document.body.appendChild(e);
        e.play()
    }

    function x(e) {
        e.className += " " + s + " " + o
    }

    function T(e) {
        e.className += " " + s + " " + u[Math.floor(Math.random() * u.length)]
    }

    function N() {
        var e = document.getElementsByClassName(s);
        var t = new RegExp("\\b" + s + "\\b");
        for (var n = 0; n < e.length; ) {
            e[n].className = e[n].className.replace(t, "")
        }
    }

    var e = 30;
    var t = 30;
    var n = 350;
    var r = 350;
    var i = "//7xuupy.com1.z0.glb.clouddn.com/tongxingSibel%20-%20Im%20Sorry.mp3";
    var s = "mw-harlem_shake_me";
    var o = "im_first";
    var u = ["im_drunk", "im_baked", "im_trippin", "im_blown"];
    var a = "mw-strobe_light";
    var f = "//s3.amazonaws.com/moovweb-marketing/playground/harlem-shake-style.css";
    var l = "mw_added_css";
    var b = g();
    var w = y();
    var C = document.getElementsByTagName("*");
    var k = null;
    for (var L = 0; L < C.length; L++) {
        var A = C[L];
        if (v(A)) {
            if (E(A)) {
                k = A;
                break
            }
        }
    }
    if (A === null) {
        console.warn("Could not find a node of the right size. Please try a different page.");
        return
    }
    c();
    S();
    var O = [];
    for (var L = 0; L < C.length; L++) {
        var A = C[L];
        if (v(A)) {
            O.push(A)
        }
    }
    })()    '>High一下</a> </li>
  </ul>
</nav>




</div>
    </header>

    
  <div class="back-to-top">
    <i class="fa fa-arrow-up"></i>
    <span>0%</span>
  </div>


    <main class="main">
      <div class="main-inner">
        <div class="content-wrap">
          

          <div class="content index posts-expand">
            
      
  
  
  <article itemscope itemtype="http://schema.org/Article" class="post-block" lang="zh-Hans">
    <link itemprop="mainEntityOfPage" href="https://malossov.top/2023/07/29/ProgramLearn/TI/c2000-learn-1/">

    <span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
      <meta itemprop="image" content="/uploads/avator.png">
      <meta itemprop="name" content="MALossov">
      <meta itemprop="description" content="是很菜的人的很菜的博客捏，无栈工程学徒ing。">
    </span>

    <span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
      <meta itemprop="name" content="MAL'S_BLOG">
    </span>
      <header class="post-header">
        <h2 class="post-title" itemprop="name headline">
          
            <a href="/2023/07/29/ProgramLearn/TI/c2000-learn-1/" class="post-title-link" itemprop="url">TI实时MCU学习-以TILaunchPad为例</a>
        </h2>

        <div class="post-meta">
            <span class="post-meta-item">
              <span class="post-meta-item-icon">
                <i class="far fa-calendar"></i>
              </span>
              <span class="post-meta-item-text">Posted on</span>

              <time title="Created: 2023-07-29 04:00:53" itemprop="dateCreated datePublished" datetime="2023-07-29T04:00:53+08:00">2023-07-29</time>
            </span>
              <span class="post-meta-item">
                <span class="post-meta-item-icon">
                  <i class="far fa-calendar-check"></i>
                </span>
                <span class="post-meta-item-text">Edited on</span>
                <time title="Modified: 2023-08-01 05:31:12" itemprop="dateModified" datetime="2023-08-01T05:31:12+08:00">2023-08-01</time>
              </span>
            <span class="post-meta-item">
              <span class="post-meta-item-icon">
                <i class="far fa-folder"></i>
              </span>
              <span class="post-meta-item-text">In</span>
                <span itemprop="about" itemscope itemtype="http://schema.org/Thing">
                  <a href="/categories/%E7%A1%AC%E4%BB%B6/" itemprop="url" rel="index"><span itemprop="name">硬件</span></a>
                </span>
            </span>

          

        </div>
      </header>

    
    
    
    <div class="post-body" itemprop="articleBody">

      
          <h1 id="C2000学习"><a href="#C2000学习" class="headerlink" title="C2000学习"></a>C2000学习</h1><blockquote>
<p>基于TI官方板卡：<a target="_blank" rel="noopener" href="https://www.ti.com.cn/tool/cn/LAUNCHXL-F280049C?keyMatch=280049C">LAUNCHXL-F280049C 评估板 | TI.com.cn</a></p>
</blockquote>
<h2 id="学习基础"><a href="#学习基础" class="headerlink" title="学习基础"></a>学习基础</h2><ol>
<li>拥有板卡。</li>
<li><p>芯片手册：<a target="_blank" rel="noopener" href="https://www.ti.com/product/TMS320F280049C">TMS320F280049C data sheet, product information and support | TI.com</a></p>
<ol>
<li><strong>用户指南</strong>：用处不大，但是可以快速开始：<a target="_blank" rel="noopener" href="https://www.ti.com.cn/document-viewer/cn/lit/html/SPRUII7B/trademarks-tm#tm">SPRUII7B | 德州仪器 TI.com.cn</a></li>
<li><strong>用户手册</strong>：虽然但是，其实MidWare里面东西更多：<a target="_blank" rel="noopener" href="https://www.ti.com.cn/document-viewer/cn/lit/html/zhca981">ZHCA981F | 德州仪器 TI.com.cn</a></li>
<li><strong>板卡手册：</strong>盒子里面丢了可以看看：<a target="_blank" rel="noopener" href="https://www.ti.com.cn/cn/lit/ug/swau114c/swau114c.pdf">https://www.ti.com.cn/cn/lit/ug/swau114c/swau114c.pdf</a></li>
</ol>
</li>
<li><p>拥有MyTI账号：所有下载都需要这个账号</p>
</li>
<li>速通TI的心：其实不比STM32难太多</li>
<li>准备开始</li>
</ol>
<h3 id="板卡导览"><a href="#板卡导览" class="headerlink" title="板卡导览"></a>板卡导览</h3><blockquote>
<p>等我学完了做吧</p>
</blockquote>
<h2 id="软件准备"><a href="#软件准备" class="headerlink" title="软件准备"></a>软件准备</h2><blockquote>
<p>TI给人的感觉就是：==零碎==</p>
</blockquote>
<ol>
<li><p><strong>CCS：</strong> <a target="_blank" rel="noopener" href="https://www.ti.com.cn/tool/cn/CCSTUDIO?keyMatch=CCS">CCSTUDIO IDE、配置、编译器或调试器 | TI.com.cn</a></p>
<ol>
<li>集成开发环境，安装之后装C2000就行。WEB版的下载速度也很快。<ol>
<li>注意不要下成<code>Theia</code>这个给M0用的了</li>
</ol>
</li>
<li>但是下载之后可以进行美化，详情参考大礼包。<ol>
<li>资源管理器天天403，别用了，也没啥用，截图留念。<img src="/2023/07/29/ProgramLearn/TI/c2000-learn-1/image-20230728060355947.png" alt="image-20230728060355947"></li>
</ol>
</li>
</ol>
</li>
<li><p><strong>C2000Ware：</strong> <a target="_blank" rel="noopener" href="https://www.ti.com.cn/tool/cn/C2000WARE">C2000WARE 软件开发套件 (SDK) | TI.com.cn</a></p>
<ol>
<li>类似于CUBE给你下的支持包，有例程，而且比CUBE那个辣眼睛的HAL库不带CUBEMX配置好看点。</li>
<li>文件结构如下：<em>（注意，以下目录结构来自5.0版本，升级之后酌情对照）</em></li>
</ol>
<figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br></pre></td><td class="code"><pre><span class="line">.</span><br><span class="line">└── C2000Ware_5_00_00_00	<span class="comment"># 根目录</span></span><br><span class="line">    ├── C2000WareUpdater.exe	<span class="comment"># 更新器，没用</span></span><br><span class="line">    ├── C2000Ware_5<span class="number">.00</span><span class="number">.00</span><span class="number">.00</span>_manifest.html	<span class="comment"># 类似于许可证，可以查看支持的板卡和库的级别</span></span><br><span class="line">    ├── C2000Ware_v5<span class="number">.00</span><span class="number">.00</span><span class="number">.00</span>_Release_Notes.pdf	<span class="comment"># 发行说明，没用</span></span><br><span class="line">    ├── archive	<span class="comment"># 没用，存了个历史的库</span></span><br><span class="line">    ├── boards	<span class="comment"># 给硬件看/你板子要看原理图的时候看</span></span><br><span class="line">    ├── change_log.html	<span class="comment"># 没啥用</span></span><br><span class="line">    ├── device_support	<span class="comment"># 军火展示+一些老的用寄存器写的例程（基本不用看）</span></span><br><span class="line">    ├── docs	<span class="comment"># 目录导航`/docs/c2000Ware_quickstart_guide/html/index.html`</span></span><br><span class="line">    ├── driverlib	<span class="comment"># 你滴库函数！！</span></span><br><span class="line">    ├── examples	<span class="comment"># 重新导向你滴库函数</span></span><br><span class="line">    ├── kernel	<span class="comment"># RTOS</span></span><br><span class="line">    ├── libraries	<span class="comment"># 第三方库</span></span><br><span class="line">    ├── license.txt	<span class="comment"># 法律文件</span></span><br><span class="line">    ├── training	<span class="comment"># 类似于靶场，但是很烂</span></span><br><span class="line">    ├── uninstallers	<span class="comment"># 卸载器</span></span><br><span class="line">    └── utilities	<span class="comment"># 一些工具，目前没用</span></span><br></pre></td></tr></table></figure>
<ol>
<li>根据doc文档中说明如下：</li>
</ol>
<p>| Directory Name | Description                                                  |<br>| ——————— | —————————————————————————————— |<br>| .metadata      | 包含 C2000Ware 资源浏览器独立 GUI 文件。请勿修改。           |<br>| boards         | 包含 C2000 controlCARDS的硬件设计原理图、BOM、gerber 文件和文档， |<br>| device_support | 包含所有特定于设备的支持文件、位字段标头和设备开发用户指南。 |<br>| docs           | 包含 C2000Ware 软件包用户指南和所有软件包文档的 HTML 索引页。 |<br>| driverlib      | 包含特定于设备的驱动程序库和基于驱动程序的外围设备示例。     |<br>| examples       | 包含涉及多个设备/外设的示例，以展示不同的应用。              |<br>| libraries      | 包含特定于设备的库和核心库。                                 |<br>| uninstallers   | 包含 C2000Ware 卸载程序。                                    |<br>| utilities      | 包含开发实用程序应用程序，如闪存编程器、Windows 驱动程序和第三方软件 |</p>
<pre><code>4. 啊对，这么重要的东西CCS是不会给你下的。
</code></pre></li>
<li><p><strong>SysConfig</strong>:TI-CubeMX：<a target="_blank" rel="noopener" href="https://www.ti.com.cn/tool/cn/SYSCONFIG">SYSCONFIG IDE、配置、编译器或调试器 | TI.com.cn</a></p>
<ol>
<li>功能没那么强大，而且需要手动添加软件包。<img src="/2023/07/29/ProgramLearn/TI/c2000-learn-1/image-20230728060521577.png" alt="image-20230728060521577">选中<code>&lt;盘符&gt;:\ti\C2000</code>即可。</li>
</ol>
</li>
<li><strong>ControlSuite</strong>：一个老的库支持软件，但是支持全中文。<ol>
<li>里面有一些实用案例，结构还可以，可以拿来看。</li>
<li>和Ware一样，不创建启动方式，自己进去找。</li>
</ol>
</li>
</ol>
<blockquote>
<p>迁移可以参考：<a target="_blank" rel="noopener" href="https://www.ti.com.cn/cn/lit/ug/sprui45c/sprui45c.pdf">https://www.ti.com.cn/cn/lit/ug/sprui45c/sprui45c.pdf</a></p>
</blockquote>
<ol>
<li>其他电机、控制包请参考大礼包 :)。</li>
</ol>
<h2 id="第一个工程模板"><a href="#第一个工程模板" class="headerlink" title="第一个工程模板"></a>第一个工程模板</h2><blockquote>
<p>非常重要，直接面向C2000Ware编程的第一步！</p>
</blockquote>
<h3 id="创建你的英雄"><a href="#创建你的英雄" class="headerlink" title="创建你的英雄"></a>创建你的英雄</h3><p>直接放目录结构：</p>
<figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br></pre></td><td class="code"><pre><span class="line">├── .ccsproject	<span class="comment"># CCS创建的工程文件</span></span><br><span class="line">├── .cproject	<span class="comment"># CCS创建的工程文件</span></span><br><span class="line">├── .project	<span class="comment"># CCS创建的工程文件</span></span><br><span class="line">├── App	<span class="comment"># 应用层，你编写的逻辑等</span></span><br><span class="line">│   ├── inc	<span class="comment"># 你自己的库</span></span><br><span class="line">│   └── src	<span class="comment"># 你的主要逻辑</span></span><br><span class="line">├── Bsp	<span class="comment"># SysConfig生成的你自己的班级支持包</span></span><br><span class="line">│   ├── board.c</span><br><span class="line">│   ├── board.cmd.genlibs</span><br><span class="line">│   ├── board.h</span><br><span class="line">│   ├── board.opt</span><br><span class="line">│   ├── c2000ware_libraries.c</span><br><span class="line">│   ├── c2000ware_libraries.cmd.genlibs</span><br><span class="line">│   ├── c2000ware_libraries.h</span><br><span class="line">│   ├── c2000ware_libraries.opt</span><br><span class="line">│   ├── clocktree.h</span><br><span class="line">│   ├── pinmux.csv</span><br><span class="line">│   └── untitled.syscfg	<span class="comment"># 双击可以进入配置界面</span></span><br><span class="line">├── C2000Ware	<span class="comment"># \driverlib\f28004x\driverlib 全部内容</span></span><br><span class="line">│   ├── ccs	<span class="comment"># 需要引用头文件，其中，DEBUG和RELEASE需要分开引入/排除</span></span><br><span class="line">│   ├── inc	<span class="comment"># 寄存器层的东西</span></span><br><span class="line">│   ├── ……	<span class="comment"># 其他DriverLib</span></span><br><span class="line">├── Cmd	<span class="comment"># 烧写算法文件，原始地址为：\device_support\f28004x\common\cmd 按需选用</span></span><br><span class="line">│   ├── 28004x_cla_flash_lnk.cmd</span><br><span class="line">│   ├── 28004x_cla_ram_lnk.cmd</span><br><span class="line">│   ├── 28004x_generic_flash_lnk.cmd</span><br><span class="line">│   ├── 28004x_generic_ram_lnk.cmd</span><br><span class="line">│   ├── 28004x_iqmath_flash_lnk.cmd</span><br><span class="line">│   ├── 28004x_iqmath_ram_lnk.cmd</span><br><span class="line">│   ├── 28004x_launchpad_demo_flash_lnk.cmd</span><br><span class="line">│   ├── 28004x_launchpad_demo_ram_lnk.cmd</span><br><span class="line">│   └── f28004x_headers_nonbios.cmd 	<span class="comment"># \device_support\f28004x\headers\cmd</span></span><br><span class="line">├── Debug	<span class="comment"># CCS自动生成的调试文件</span></span><br><span class="line">├── Device	<span class="comment"># 设备描述文件，只要选用这几个即可，原始目录：\device_support\f28004x\common\include和source当中</span></span><br><span class="line">│   ├── device.c</span><br><span class="line">│   ├── device.h</span><br><span class="line">│   ├── driverlib.h</span><br><span class="line">│   └── f28004x_codestartbranch.asm	<span class="comment"># 板卡启动文件</span></span><br><span class="line">├── Lib	<span class="comment"># 按需使用的C2000的库</span></span><br><span class="line">└── targetConfigs	<span class="comment"># CCS生成的</span></span><br><span class="line">    ├── TMS320F280049C.ccxml	<span class="comment"># 你的烧录器配置文件</span></span><br><span class="line">    └── readme.txt</span><br></pre></td></tr></table></figure>
<p>主要构建步骤如下：</p>
<ol>
<li><p>创建各个文件夹，并拖入文件：<strong>Cmd,Device,C2000Ware</strong></p>
</li>
<li><p>使用<code>SysConfig</code>生成<strong>BSP</strong>，直接保存全部文件（右下角）<img src="/2023/07/29/ProgramLearn/TI/c2000-learn-1/image-20230728060700456.png" alt="image-20230728060700456"></p>
</li>
<li><p>进入CCS之后创建工程，需要设置的地方如下：右键项目属性进入：</p>
<ol>
<li>使用的RuntimeSupport和OutputFormat，以及使用的连接器/连接件也可以直接放在工程当中（Cmd,然后禁用其他的）：<img src="/2023/07/29/ProgramLearn/TI/c2000-learn-1/image-20230728060810966.png" alt="image-20230728060810966"></li>
<li>预定义设置<code>DEBUG</code>宏：<img src="/2023/07/29/ProgramLearn/TI/c2000-learn-1/image-20230728060905079.png" alt="image-20230728060905079"></li>
<li>Include（注意在引用<code>Ware</code>当中的2000之后，还需要引入Debug并且屏蔽Release(3个lib都需要屏蔽！)：<img src="/2023/07/29/ProgramLearn/TI/c2000-learn-1/image-20230728071302694.png" alt="image-20230728071302694"></li>
<li>右键禁用其他的连接文件，以免造成困扰：<img src="/2023/07/29/ProgramLearn/TI/c2000-learn-1/image-20230728061040737.png" alt="image-20230728061040737"><ol>
<li>推荐使用generic系列的。</li>
</ol>
</li>
<li>Main中建立主函数，构建如下，初始化顺序参考官方例程，如：</li>
</ol>
<figure class="highlight c"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">#<span class="keyword">include</span> <span class="string">&quot;device.h&quot;</span></span></span><br><span class="line"><span class="meta">#<span class="keyword">include</span> <span class="string">&quot;driverlib.h&quot;</span></span></span><br><span class="line"><span class="meta">#<span class="keyword">include</span> <span class="string">&quot;board.h&quot;</span></span></span><br><span class="line"></span><br><span class="line"><span class="comment">/**</span></span><br><span class="line"><span class="comment"> * main.c</span></span><br><span class="line"><span class="comment"> */</span></span><br><span class="line"><span class="type">int</span> <span class="title function_">main</span><span class="params">(<span class="type">void</span>)</span></span><br><span class="line">&#123;</span><br><span class="line">    Device_init();  <span class="comment">// 初始化设备</span></span><br><span class="line">    Interrupt_initModule(); <span class="comment">//初始化中断</span></span><br><span class="line">    Interrupt_initVectorTable();    <span class="comment">//初始化中断向量表</span></span><br><span class="line">    </span><br><span class="line">    </span><br><span class="line">    Board_init();   <span class="comment">//SysConfig文件引入</span></span><br><span class="line">    </span><br><span class="line">    Interrupt_enableMaster();   <span class="comment">//开启中断</span></span><br><span class="line">    </span><br><span class="line">    <span class="keyword">while</span>(<span class="number">1</span>);</span><br><span class="line">    </span><br><span class="line"></span><br><span class="line">	<span class="keyword">return</span> <span class="number">0</span>;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure>
</li>
</ol>
<h2 id="外设"><a href="#外设" class="headerlink" title="外设"></a>外设</h2><h2 id="大礼包"><a href="#大礼包" class="headerlink" title="大礼包"></a>大礼包</h2><h3 id="一些“增值目录”"><a href="#一些“增值目录”" class="headerlink" title="一些“增值目录”"></a>一些“增值目录”</h3><ol>
<li>TI官方软件板卡说明：<a target="_blank" rel="noopener" href="https://software-dl.ti.com/C2000/docs/software_guide_zh/index.html">C2000™ 软件指南 — C2000™ 软件指南 (ti.com)</a></li>
<li>TI官方C2000主页：<a target="_blank" rel="noopener" href="https://www.ti.com.cn/zh-cn/microcontrollers-mcus-processors/c2000-real-time-control-mcus/overview.html">C2000 实时微控制器 | TI.com.cn</a></li>
</ol>
<h3 id="C2000的美化"><a href="#C2000的美化" class="headerlink" title="C2000的美化"></a>C2000的美化</h3><h4 id="CCS的汉化"><a href="#CCS的汉化" class="headerlink" title="CCS的汉化"></a>CCS的汉化</h4><ol>
<li>众所周知，CCS是基于Eclipse的二次开发，那么，采用Eclipse的汉化方式当然可行。</li>
<li><code>帮助-&gt;安装新软件</code>：<img src="/2023/07/29/ProgramLearn/TI/c2000-learn-1/image-20230728054051651.png" alt="image-20230728054051651"></li>
<li>名称随意添加，位置请添加：<a target="_blank" rel="noopener" href="https://mirrors.tuna.tsinghua.edu.cn/eclipse/technology/babel/update-site/latest/">https://mirrors.tuna.tsinghua.edu.cn/eclipse/technology/babel/update-site/latest/</a><ol>
<li>这是清华大学的babel镜像源，根据地理位置选择，搜一个。</li>
</ol>
</li>
<li>然后在babel列表Fetch出来之后选择：<img src="/2023/07/29/ProgramLearn/TI/c2000-learn-1/image-20230728054225650.png" alt="image-20230728054225650"></li>
<li>下一步下一步。</li>
</ol>
<h4 id="主题选择和美化"><a href="#主题选择和美化" class="headerlink" title="主题选择和美化"></a>主题选择和美化</h4><blockquote>
<p>我这里安装我喜欢的暗色主题</p>
</blockquote>
<ol>
<li><code>帮助--&gt;Eclipse市场</code>，等待载入之后选择Poular，很快找到：<img src="/2023/07/29/ProgramLearn/TI/c2000-learn-1/image-20230728054402100.png" alt="image-20230728054402100"></li>
<li>Icon挺好看的，但是第三个安装不了（CCS缺JAVA包），点完了就点下一个吧。<img src="/2023/07/29/ProgramLearn/TI/c2000-learn-1/image-20230728054442741.png" alt="image-20230728054442741"></li>
<li>安装完后如果不满意的后续更改：<ol>
<li><code>窗口--&gt;首选项--&gt;常规--&gt;外观</code>:使用主题：<img src="/2023/07/29/ProgramLearn/TI/c2000-learn-1/image-20230728054546999.png" alt="image-20230728054546999"></li>
<li>随后点击<code>Open Color Themes Page</code>进入主题的修改页，可以快速搭配，Enjoy！<img src="/2023/07/29/ProgramLearn/TI/c2000-learn-1/image-20230728054659114.png" alt="image-20230728054659114">我的：Af7-Qw</li>
<li>如果有其他好看的主题请分享给我捏。</li>
</ol>
</li>
</ol>
<h3 id="CCS使用小技巧"><a href="#CCS使用小技巧" class="headerlink" title="CCS使用小技巧"></a>CCS使用小技巧</h3><ol>
<li><p>CCS是默认开启代码补全的，只是需要快捷键触发，默认快捷键为：<code>Alt+/</code>。</p>
<ol>
<li>需要修改可以在<code>首选项--&gt;键</code>当中搜索<code>内容辅助</code>进行修改：<img src="/2023/07/29/ProgramLearn/TI/c2000-learn-1/image-20230728054931246.png" alt="image-20230728054931246"></li>
</ol>
</li>
<li><p>CCS恢复默认窗口：<code>窗口--&gt;透视图--&gt;复位透视图</code>根据需求恢复吧。<img src="/2023/07/29/ProgramLearn/TI/c2000-learn-1/image-20230728055002376.png" alt="image-20230728055002376"></p>
</li>
<li><p>Eclipse没有Copilot，但是应用商店里面有这个叫做<strong>Tabnine</strong>的插件，可以提供代码自动补齐，虽然反应不是很快；<img src="/2023/07/29/ProgramLearn/TI/c2000-learn-1/image-20230728064333468.png" alt="image-20230728064333468"></p>
<ol>
<li>在和我一起建立软件包之后，可以直接在code进行代码查找和开发哦w</li>
<li><del>白嫖Copilot的劳动力</del></li>
</ol>
</li>
</ol>

      
    </div>

    
    
    
      <footer class="post-footer">
        <div class="post-eof"></div>
      </footer>
  </article>
  
  
  

      
  
  
  <article itemscope itemtype="http://schema.org/Article" class="post-block" lang="zh-Hans">
    <link itemprop="mainEntityOfPage" href="https://malossov.top/2022/12/28/ProgramLearn/UbuntuUsage/Linux%E5%9F%BA%E7%A1%80%E5%AE%9E%E8%B7%B5/">

    <span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
      <meta itemprop="image" content="/uploads/avator.png">
      <meta itemprop="name" content="MALossov">
      <meta itemprop="description" content="是很菜的人的很菜的博客捏，无栈工程学徒ing。">
    </span>

    <span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
      <meta itemprop="name" content="MAL'S_BLOG">
    </span>
      <header class="post-header">
        <h2 class="post-title" itemprop="name headline">
          
            <a href="/2022/12/28/ProgramLearn/UbuntuUsage/Linux%E5%9F%BA%E7%A1%80%E5%AE%9E%E8%B7%B5/" class="post-title-link" itemprop="url">如何在宿舍有幽灵电脑</a>
        </h2>

        <div class="post-meta">
            <span class="post-meta-item">
              <span class="post-meta-item-icon">
                <i class="far fa-calendar"></i>
              </span>
              <span class="post-meta-item-text">Posted on</span>

              <time title="Created: 2022-12-28 14:00:53" itemprop="dateCreated datePublished" datetime="2022-12-28T14:00:53+08:00">2022-12-28</time>
            </span>
              <span class="post-meta-item">
                <span class="post-meta-item-icon">
                  <i class="far fa-calendar-check"></i>
                </span>
                <span class="post-meta-item-text">Edited on</span>
                <time title="Modified: 2023-01-12 10:52:37" itemprop="dateModified" datetime="2023-01-12T10:52:37+08:00">2023-01-12</time>
              </span>
            <span class="post-meta-item">
              <span class="post-meta-item-icon">
                <i class="far fa-folder"></i>
              </span>
              <span class="post-meta-item-text">In</span>
                <span itemprop="about" itemscope itemtype="http://schema.org/Thing">
                  <a href="/categories/%E7%8E%AF%E5%A2%83/" itemprop="url" rel="index"><span itemprop="name">环境</span></a>
                </span>
            </span>

          

        </div>
      </header>

    
    
    
    <div class="post-body" itemprop="articleBody">

      
          <h2 id="基础命令和服务部分"><a href="#基础命令和服务部分" class="headerlink" title="基础命令和服务部分"></a>基础命令和服务部分</h2><blockquote>
<p>背景故事：呜呼哀哉，我因为没有趁着第一波危机从学校逃跑，不幸地阳了，没有精力完成实验报告和拷贝文件，只好在家远程连接到学校的电脑上完成作业，他需要做一些操作让他的台机能在家中被连接。</p>
</blockquote>
<ul>
<li><p>我已有的知识：</p>
<ul>
<li>Linux基础服务命令：<code>systemctl</code>,<code>crontab</code>……</li>
<li>网页搜索能力</li>
</ul>
</li>
<li><p>我已有的设备：</p>
<ul>
<li>台式电脑：在宿舍，运行Windows11和Ubuntu22.04.1</li>
<li>香橙派3：在宿舍，运行Ubuntu18.04</li>
<li>笔记本：带回宿舍用以连接</li>
</ul>
</li>
<li><p>我需要做的：</p>
<ul>
<li>让香橙派能够唤醒台式电脑</li>
<li>保持宿舍需要每时每刻发包的电信网络不断网</li>
<li>让这两台设备能够被远控</li>
</ul>
</li>
<li><p>解决方案：</p>
<ul>
<li>唤醒问题：使用魔术封包的方法让主机支持WakeOnLan</li>
<li>联网问题：使用crontab定时任务，让香橙派每一分钟给路由器发包，保证联网保活的包不断</li>
<li>远程连接问题：使用内网透传工具</li>
</ul>
</li>
</ul>
<h2 id="服务构建"><a href="#服务构建" class="headerlink" title="服务构建"></a>服务构建</h2><h3 id="保活：Crontab定时命令服务"><a href="#保活：Crontab定时命令服务" class="headerlink" title="保活：Crontab定时命令服务"></a>保活：Crontab定时命令服务</h3><h4 id="数据包流量分析"><a href="#数据包流量分析" class="headerlink" title="数据包流量分析"></a>数据包流量分析</h4><blockquote>
<p>背景故事：由于电信网络糟糕的设计，每次重启路由器时（即断电后第二天），都需要重新重新验证，所以必须进行保活处理。</p>
</blockquote>
<ol>
<li><p>首先验证网络登录方式，使用BurpSuite对登录网络进行抓包：（由于现在是远程访问，就改包越权访问到主页演示一下orz，一旦登出我两台设备都没网了害得等服务主动发包帮我续上）<img src="http://picgo.malossov.top/malpicbed/image-20221218132940999.png" alt="image-20221218132940999"></p>
<ol>
<li>最终抓到的包为：<img src="http://picgo.malossov.top/malpicbed/image-20221218133130102.png" alt="image-20221218133130102"></li>
</ol>
</li>
<li><p>稍稍修改为curl命令的语法并写成可以直接运行的脚本形式:<img src="http://picgo.malossov.top/malpicbed/image-20221218133246914.png" alt="image-20221218133246914"></p>
<blockquote>
<p>curl命令语法：<a target="_blank" rel="noopener" href="https://blog.csdn.net/u013514928/article/details/102810250">curl命令用法_追梦菜鸟的博客-CSDN博客_curl语法</a></p>
<p>基础语法为：curl [options…] <url>，主要有：</url></p>
<ol>
<li>-H/—header   LINE     (H) <em># 添加请求头, 可添加多个 -H 参数,参数格式: -H “NAME: VALUE”</em></li>
<li>-o/—output FILE   FILE     <em># 把响应内容输出到指定文件</em></li>
<li>-F/—form    CONTENT (H)  # <em>参考格式: -F “name1=@/filepath” -F “name2=stringvalue”</em></li>
<li>-b/—cookie   STRING/FILE (H) <em># 请求头的 Cookie 字段, 以字符串的形式提供,**或从指定 cookie 文件中读取</em></li>
<li>-d/—data    DATA   (H)</li>
</ol>
</blockquote>
</li>
<li><p>这时候可以使用终端运行脚本进行验证：<img src="http://picgo.malossov.top/malpicbed/image-20221218133346827.png" alt="image-20221218133346827"></p>
</li>
<li><p>下面把脚本使用scp命令拷贝给香橙派之后进行定时任务的书写：<img src="http://picgo.malossov.top/malpicbed/image-20221218133620133.png" alt="image-20221218133620133"></p>
<blockquote>
<p>SCP命令用法为：<a target="_blank" rel="noopener" href="https://www.runoob.com/linux/linux-comm-scp.html">Linux scp命令 | 菜鸟教程 (runoob.com)</a></p>
<ol>
<li>本地到远程：scp local_file remote_username@remote_ip:remote_file </li>
<li>远程到本地：scp root@www.runoob.com:/home/root/others/music /home/space/music/1.mp3 </li>
</ol>
</blockquote>
</li>
</ol>
<h4 id="Crontab保活"><a href="#Crontab保活" class="headerlink" title="Crontab保活"></a>Crontab保活</h4><blockquote>
<p>网上一般的都是比较老的<code>/etc/cron</code>和直接开启crond服务，但是ubuntu升级到systemctl下的系统步骤较少，这里随便试一下成功了。</p>
</blockquote>
<ol>
<li><p>我这里ubuntu自带了crontab的命令。<img src="http://picgo.malossov.top/malpicbed/image-20221218134507120.png" alt="image-20221218134507120"></p>
</li>
<li><p>调用cron -e选择vim进行服务文件的编辑。cron的格式为：<img src="http://picgo.malossov.top/malpicbed/08090352-4e0aa3fe4f404b3491df384758229be1.png" alt="《crontab命令详解 含启动/重启/停止》"></p>
<blockquote>
<p>在以上各个字段中，还可以使用以下特殊字符：</p>
<ul>
<li><p>星号（*）：代表所有可能的值，例如month字段如果是星号，则表示在满足其它字段的制约条件后每月都执行该命令操作。</p>
</li>
<li><p>逗号（,）：可以用逗号隔开的值指定一个列表范围，例如，“1,2,5,7,8,9”</p>
</li>
<li><p>中杠（-）：可以用整数之间的中杠表示一个整数范围，例如“2-6”表示“2,3,4,5,6”</p>
</li>
<li><p>正斜线（/）：可以用正斜线指定时间的间隔频率，例如“0-23/2”表示每两小时执行一次。同时正斜线可以和星号一起使用，例如*/10，如果用在minute字段，表示每十分钟执行一次。</p>
</li>
</ul>
</blockquote>
</li>
<li><p><code>crontab -l</code>列出cron服务内容：在每分钟执行一次curl的操作，同时在每小时删除一次日志文件。cron当中必须使用绝对路径，否则会运行失败。<img src="http://picgo.malossov.top/malpicbed/image-20221218135121983.png" alt="image-20221218135121983"></p>
<ol>
<li>network.sh内容：将内容存入tmp.txt日志当中。<img src="http://picgo.malossov.top/malpicbed/image-20221218135244996.png" alt="image-20221218135244996"></li>
</ol>
</li>
<li><p>接下来使能服务，注意ubuntu中cron的服务不是<code>crond</code>，而是<code>cron.service</code><img src="http://picgo.malossov.top/malpicbed/image-20221218135419224.png" alt="image-20221218135419224"></p>
<blockquote>
<p>systemctl基本的服务操作：</p>
<figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta prompt_">$ </span><span class="language-bash">systemctl start   &lt;docker&gt;.service    //启动</span></span><br><span class="line"><span class="meta prompt_">$ </span><span class="language-bash">systemctl restart &lt;docker&gt;.service    //重启</span></span><br><span class="line"><span class="meta prompt_">$ </span><span class="language-bash">systemctl stop    &lt;docker&gt;.service    //停止</span></span><br><span class="line"><span class="meta prompt_">$ </span><span class="language-bash">systemctl reload  &lt;docker&gt;.service    //重新加载</span></span><br><span class="line"><span class="meta prompt_">$ </span><span class="language-bash">systemctl <span class="built_in">enable</span>  &lt;docker&gt;.service    //加入开机启动</span></span><br><span class="line"><span class="meta prompt_">$ </span><span class="language-bash">systemctl <span class="built_in">disable</span> &lt;docker&gt;.service    //取消开机启动</span></span><br></pre></td></tr></table></figure>
<p>systemctl配置详解：</p>
<p><a target="_blank" rel="noopener" href="https://juejin.cn/post/6963550409482829832">详细讲解systemctl（附常用指令） - 掘金 (juejin.cn)</a></p>
</blockquote>
</li>
<li><p>可以观察tmp.txt日志文件看看是不是真的curl了，也可以使用<code>systemctl status &lt;service&gt;</code>进行日志查看：<img src="http://picgo.malossov.top/malpicbed/image-20221218135844577.png" alt="image-20221218135844577"></p>
</li>
<li><p>可以看到已经成功了。</p>
</li>
</ol>
<h3 id="远程登录开启"><a href="#远程登录开启" class="headerlink" title="远程登录开启"></a>远程登录开启</h3><blockquote>
<p>由于我的路由器时电信送的便宜玩意，管理后台特别烂，所以只有DHCP的局域网IP分配，非常伤心。无法配置todesk的远程唤醒，只能使用ubuntu下的ethtools工具进行相关配置。</p>
<p><strong>所以我大概是简体中文ubuntu22唤醒第一人了？</strong></p>
</blockquote>
<p>国内互联网上的资料非常老，在服务管理这一块用的还是古老的<code>rc.local</code>方式，而这种方式在ubuntu22当中根本就没有被使能，所以必须还是使用systemd的方式进行服务的追加和保活。</p>
<h4 id="被唤醒主机"><a href="#被唤醒主机" class="headerlink" title="被唤醒主机"></a>被唤醒主机</h4><ol>
<li><p>安装<code>ethtool</code>软件包：<code>sudo apt install ethtool -y</code></p>
</li>
<li><p>更改并查看网卡状态，将网卡的在线唤醒模式开启：<code>sudo ethtool -s enp5s0 wol g</code></p>
<ol>
<li>使用<code>ethtool enp5s0</code>查看网卡状态，<strong>Wake-on:</strong>这一项为<strong>g</strong>表示已经开启了唤醒：<img src="http://picgo.malossov.top/malpicbed/image-20221218140530400.png" alt="image-20221218140530400"></li>
</ol>
</li>
<li><p>但是由于Linux万物皆文件的特性，在重启时，网卡的配置文件会被覆盖，因此采用systemd的方式，编写系统服务完成自动唤醒网卡的操作：</p>
<ol>
<li><p>使用<code>--preserve-env</code>操作进行提权，直接编写systemctl服务：<code>sudo --preserve-env systemctl edit --force --full wol-enable.service</code></p>
<figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><span class="line">[Unit]    # 服务本身的名字和说明</span><br><span class="line">Description=Enable Wake-up on LAN</span><br><span class="line"></span><br><span class="line">[Service]</span><br><span class="line">Type=oneshot    # 只执行一项任务、随后立即退出的服务</span><br><span class="line">ExecStart=/sbin/ethtool -s enp2s0   wol g    # 执行的命令，注意ethtool的位置是在sbin下的，泪目</span><br><span class="line"></span><br><span class="line">[Install]</span><br><span class="line">WantedBy=basic.target    # 挂载在basic.target下，优先级必须比我用户启动高</span><br></pre></td></tr></table></figure>
</li>
<li><p>详细配置2.0：<a target="_blank" rel="noopener" href="https://www.cnblogs.com/zwcry/p/9602756.html">linux systemctl 指令 —— 阮一峰 - 七脉 - 博客园 (cnblogs.com)</a></p>
</li>
</ol>
</li>
</ol>
<h4 id="唤醒机器"><a href="#唤醒机器" class="headerlink" title="唤醒机器"></a>唤醒机器</h4><ol>
<li><p>查询到被唤醒机器的mac地址之后，使用魔术封包即可唤醒，也是安装个<code>wakeonlan</code>软件包就行。<img src="http://picgo.malossov.top/malpicbed/image-20221218141250231.png" alt="image-20221218141250231"></p>
</li>
<li><p>可以看到ubuntu的软件包是全局发送的，不像windows下某些解决方案必须固定ip。</p>
<ol>
<li>个人学了基本sdn控制器之后的理解大概是路由会记住主机的mac表然后发送给对应主机。</li>
</ol>
</li>
<li><p>为了配合简洁使用写了个flask服务：</p>
<figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">@app.route(<span class="params"><span class="string">&#x27;/&#x27;</span>, methods=[<span class="string">&#x27;GET&#x27;</span>]</span>)</span></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">hello_world</span>():</span><br><span class="line">    <span class="keyword">return</span> <span class="string">&#x27;&#x27;&#x27;</span></span><br><span class="line"><span class="string">    &lt;form action=&quot;/&quot; method=&quot;post&quot;&gt;</span></span><br><span class="line"><span class="string">        &lt;input type=&quot;submit&quot; value=&quot;SendRemoteRebootMessage&quot;&gt;</span></span><br><span class="line"><span class="string">    &lt;/form&gt;</span></span><br><span class="line"><span class="string">    &#x27;&#x27;&#x27;</span></span><br><span class="line"></span><br><span class="line"><span class="meta">@app.route(<span class="params"><span class="string">&#x27;/&#x27;</span>, methods=[<span class="string">&#x27;POST&#x27;</span>]</span>)</span></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">post</span>():</span><br><span class="line">    <span class="keyword">import</span> subprocess</span><br><span class="line">    subprocess.call(<span class="string">&#x27;./a.sh&#x27;</span>)</span><br><span class="line">    <span class="keyword">return</span> <span class="string">&#x27;&#x27;&#x27;</span></span><br><span class="line"><span class="string">    Successfully Reboot from remote</span></span><br><span class="line"><span class="string">    &lt;form action=&quot;/&quot; method=&quot;post&quot;&gt;</span></span><br><span class="line"><span class="string">        &lt;input type=&quot;submit&quot; value=&quot;Resend Message&quot;&gt;</span></span><br><span class="line"><span class="string">    &lt;/form&gt;</span></span><br><span class="line"><span class="string">    &#x27;&#x27;&#x27;</span></span><br></pre></td></tr></table></figure>
<ol>
<li>对应服务程序：由于flask这个pip包的原因，不能使用<code>nohup</code>和<code>&amp;</code>在后台运行，所以状态一直是loaded，但是日志是没有问题的。<img src="http://picgo.malossov.top/malpicbed/image-20221218141622686.png" alt="image-20221218141622686"></li>
<li>来点cpolar透传5000端口之后的样子：<img src="http://picgo.malossov.top/malpicbed/image-20221218141901735.png" alt="image-20221218141901735"></li>
</ol>
</li>
</ol>
<h3 id="外网透传和远控"><a href="#外网透传和远控" class="headerlink" title="外网透传和远控"></a>外网透传和远控</h3><ol>
<li>透传使用的是cpolar白嫖的三个通道，配置方法在文档里面很详细：<a target="_blank" rel="noopener" href="https://www.cpolar.com/docs，还有`9200端口`的webui，基本上很无脑：![image-20221218142023423](http://picgo.malossov.top/malpicbed/image-20221218142023423.png">https://www.cpolar.com/docs，还有`9200端口`的webui，基本上很无脑：![image-20221218142023423](http://picgo.malossov.top/malpicbed/image-20221218142023423.png</a>)</li>
<li>控制方面使用的是<code>toDesk</code>，非常流畅，也是对Linux支持较为友好。<img src="http://picgo.malossov.top/malpicbed/image-20221218142149380.png" alt="image-20221218142149380"></li>
</ol>
<h2 id="后续使用"><a href="#后续使用" class="headerlink" title="后续使用"></a>后续使用</h2><h3 id="双系统切换"><a href="#双系统切换" class="headerlink" title="双系统切换"></a>双系统切换</h3><p>电脑的默认引导加载程序和管理器因为安装了Ubuntu的缘故被设置成grub2，因此其实对于引导的修改就是对于grub2启动项的修改。</p>
<p><a target="_blank" rel="noopener" href="https://help.ubuntu.com/community/Grub2">Grub2在UbuntuWiki上的介绍</a>：↓简单的部分中文翻译和理解：这里为软件包相关配置，不涉及到<code>grub控制台</code>的配置</p>
<blockquote>
<ol>
<li><p><strong>Grub2介绍：</strong> 是引导加载和管理工具，在进入的时候会提供界面等待用户选择，或者将控制交给系统内核(可以是任意被识别到的系统内核)。</p>
</li>
<li><p><strong>文件结构：</strong></p>
<ol>
<li><code>/etc/grub.d</code>（文件夹）：Grub2脚本</li>
<li><code>/boot/grub</code> （文件夹）：Grub2模块和菜单文件（<code>grub.cfg</code>）</li>
<li><code>/etc/default/grub</code> ：（配置文件）用户主要修改通过这个文件<ol>
<li>应用配置更改：修改<code>grub.d</code>和<code>/etc/default/grub</code>后，运行<code>update-grub</code>，来修改<code>/boot/grub</code>当中的内容。</li>
</ol>
</li>
</ol>
</li>
</ol>
</blockquote>
<h4 id="Linux切换到Windows"><a href="#Linux切换到Windows" class="headerlink" title="Linux切换到Windows"></a>Linux切换到Windows</h4><p>修改grub配置文件，并且运行<code>sudo update-grub</code>即可。</p>
<p><img src="http://picgo.malossov.top/malpicbed/image-20221218141710251.png" alt="image-20221218141710251"></p>
<h4 id="Windows下切换回Linux系统"><a href="#Windows下切换回Linux系统" class="headerlink" title="Windows下切换回Linux系统"></a>Windows下切换回Linux系统</h4><ol>
<li>让Windows正确识别到Linux的文件系统并且能进行修改<ol>
<li>在网上陆续找了一些能识别ext4文件系统的软件但是都效果不佳，最终找到<a target="_blank" rel="noopener" href="https://www.paragon-software.com/home/linuxfs-windows/">Linux File Systems for Windows | Paragon Software (paragon-software.com)</a>可以将Linux盘挂在到Windows系统文件管理器当中<img src="http://picgo.malossov.top/malpicbed/image-20221218123143305.png" alt="image-20221218123143305"></li>
</ol>
</li>
<li>从<code>grub</code>的描述当中可知，<code>grub</code>在进行启动引导时，使用的是<code>/boot/grub</code>当中的模块和菜单文件。直接修改<code>/boot/grub/grub.cfg</code>菜单文件，将默认启动选项移到<code>windows11</code>对应的启动菜单栏目即可。<img src="http://picgo.malossov.top/malpicbed/image-20221218122929405.png" alt="image-20221218122929405"></li>
</ol>
<h3 id="意外失去连接之后怎么办"><a href="#意外失去连接之后怎么办" class="headerlink" title="意外失去连接之后怎么办"></a>意外失去连接之后怎么办</h3><ol>
<li><p>此时局域网还是连通的，使用nmap扫描当前网段的内容。</p>
</li>
<li><p>使用cpolar远程登录到香橙派中。</p>
</li>
<li><p>使用命令：<code>nmap 192.168.101.1-10</code> 扫描10个ip,一般情况下dhcp会将PC分配在1-10当中。因为我都开启了ssh服务，可以通过香橙派作为中继连接主机的ssh服务<img src="http://picgo.malossov.top/malpicbed/image-20221218132505568.png" alt="image-20221218132505568"></p>
</li>
<li><p>此时pc被分配在192.168.101.6上。ssh连接之后重启服务或者重启。</p>
</li>
<li><p>扫描时可以添加如下选项：</p>
<ol>
<li><blockquote>
<p>Windows如果无法扫描到，添加：<code>-Pn</code> 禁止ping访问确定主机是否存在，强力联通；</p>
<p>扫描速度太慢，给予<strong>sudo</strong>权限之后添加<code>-sS</code>进行扫描，更改连接方式，不需要经过TCP三次握手；</p>
<p>或者选择经过TCP三次握手但是修改timeout超时时间，如：<code>--host-timeout 10</code></p>
</blockquote>
</li>
</ol>
</li>
</ol>
<h2 id="关于为什么咕咕了那么久就上传了这个"><a href="#关于为什么咕咕了那么久就上传了这个" class="headerlink" title="关于为什么咕咕了那么久就上传了这个"></a>关于为什么咕咕了那么久就上传了这个</h2><p>因为实在是太纯阳了。</p>
<p><img src="http://picgo.malossov.top/malpicbed/IMG_20221218_142310.jpg" alt="IMG_20221218_142310"></p>

      
    </div>

    
    
    
      <footer class="post-footer">
        <div class="post-eof"></div>
      </footer>
  </article>
  
  
  

      
  
  
  <article itemscope itemtype="http://schema.org/Article" class="post-block" lang="zh-Hans">
    <link itemprop="mainEntityOfPage" href="https://malossov.top/2022/09/18/ProgramLearn/1st_GroupMeet/1st-commended/">

    <span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
      <meta itemprop="image" content="/uploads/avator.png">
      <meta itemprop="name" content="MALossov">
      <meta itemprop="description" content="是很菜的人的很菜的博客捏，无栈工程学徒ing。">
    </span>

    <span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
      <meta itemprop="name" content="MAL'S_BLOG">
    </span>
      <header class="post-header">
        <h2 class="post-title" itemprop="name headline">
          
            <a href="/2022/09/18/ProgramLearn/1st_GroupMeet/1st-commended/" class="post-title-link" itemprop="url">科协软件：STM32简介</a>
        </h2>

        <div class="post-meta">
            <span class="post-meta-item">
              <span class="post-meta-item-icon">
                <i class="far fa-calendar"></i>
              </span>
              <span class="post-meta-item-text">Posted on</span>
              

              <time title="Created: 2022-09-18 04:00:53 / Modified: 23:12:10" itemprop="dateCreated datePublished" datetime="2022-09-18T04:00:53+08:00">2022-09-18</time>
            </span>
            <span class="post-meta-item">
              <span class="post-meta-item-icon">
                <i class="far fa-folder"></i>
              </span>
              <span class="post-meta-item-text">In</span>
                <span itemprop="about" itemscope itemtype="http://schema.org/Thing">
                  <a href="/categories/%E7%A1%AC%E4%BB%B6/" itemprop="url" rel="index"><span itemprop="name">硬件</span></a>
                </span>
            </span>

          

        </div>
      </header>

    
    
    
    <div class="post-body" itemprop="articleBody">

      
          <h1 id="科协软件：STM32简介"><a href="#科协软件：STM32简介" class="headerlink" title="科协软件：STM32简介"></a>科协软件：STM32简介</h1><p><strong>所有内容在组会上已经尽量和大家解释过了——内容上，只是做一个科普，了解一下将来如果选择软件路线自己可能做的事情，以及未来需要掌握的一些技能。等你真的做到了，熟练了，都不难。——就和你在EXCEL表中增删查改一样简单（大概）</strong></p>
<p><del>我会尽量简化我的语言保证绝对的口语化</del></p>
<h2 id="STM32单片机是什么"><a href="#STM32单片机是什么" class="headerlink" title="STM32单片机是什么"></a>STM32单片机是什么</h2><p>让我们按照<strong>定语越来越多</strong>的方式走进它：</p>
<ol>
<li><p>是一款MCU/单片机。</p>
<ol>
<li><p>即微控制单元(Microcontroller Unit；MCU)，也就是我们常说的<strong>单片机（单板计算机）</strong>。</p>
</li>
<li><p>望文生义，单片机就是一片芯片就能组成的计算机。可以说，MCU就是CPU的小兄弟，但是自带了一套存储设备，不需要另外购买——相当于你电脑里<strong>CPU+硬盘+内存条</strong> 三者合一之后的东西。</p>
</li>
<li><p>但是MCU性能比CPU弱很多，内存和存储能力也弱很多。</p>
</li>
<li><p>相比于CPU也更加注重 <strong>“控制”</strong>，拥有很多的接口：就像一台带着很多USB接口的电脑（只是单片机的接口可能不叫USB，但是可以对其他模块进行通信和控制。）</p>
</li>
</ol>
</li>
<li><p>一款ARM内核的MCU/单片机。</p>
<ol>
<li><p><strong>ARM内核</strong> 我们不去多了解，我们只需要知道，ARM内核执行的指令和你的电脑是不一样的，因此我们需要特殊的工具对单片机进行“跨指令集”的编程。</p>
</li>
<li><p>因此如果需要调试、运行你写出的代码，也必须下载到单片机上——因为我们的电脑无法直接运行单片机使用的机器码，他们的指令集不一样。</p>
</li>
</ol>
<blockquote>
<p>Q: 为什么我们不能在单片机上直接编程？它不是和计算机差不多吗？</p>
<p>A: 单片机的算力和存储能力都极为有限，只能运行写好的代码。而不能直接在单片机上编程。</p>
<pre><code>同样地，单片机的运行的程序也比电脑上的程序更加底层，没有操作系统作为辅助帮你自动分配好一些东西，需要直接对硬件发出一些指令。（比如：电脑会自动识别你插入的U盘，但是单片机如果想使用USB，就需要自己手动配置USB相关的外设。）
</code></pre></blockquote>
</li>
<li><p>一款ST公司出品的ARM内核的MCU/单片机。</p>
<ol>
<li>ST公司生产了这款芯片，也为我们提供了技术支持。我们可以使用ST公司给我们提供的软件更加方便地编写单片机程序。</li>
</ol>
</li>
</ol>
<blockquote>
<p>如果还不理解，可以看一下B站各路大佬的视频，直接搜索：STM32是什么即可。</p>
</blockquote>
<h2 id="STM32单片机能干什么？（简易版）"><a href="#STM32单片机能干什么？（简易版）" class="headerlink" title="STM32单片机能干什么？（简易版）"></a>STM32单片机能干什么？（简易版）</h2><ul>
<li><p>GPIO（通用输入输出）</p>
<ul>
<li><p><strong>名词解释：</strong> 通用，就是说它是万金油，干什么都行。输入输出，就是说既能当输入口使用，又能当输出口使用。</p>
</li>
<li><p>（<strong>热知识</strong>：单片机的输入和输出只有两种，<strong>高电平和低电平</strong>，可以理解为高=1，低=0。在STM32中，高电平约为3.3V，低电平约为0V）</p>
</li>
<li><p><strong>应用场景：</strong> 开关控制（高电平开，低电平关——点灯就是利用了这一点），按键输入（能够读取外部电平的变化，判断电平高低。），模拟接口……</p>
</li>
<li><p><strong>推荐阅读：</strong> <a target="_blank" rel="noopener" href="https://zhuanlan.zhihu.com/p/80096604#:~:text=GPIO%E6%98%AF%E4%BB%80%E4%B9%88%EF%BC%9F.%20%E5%AD%97%E9%9D%A2%E6%84%8F%E6%80%9D%E7%9C%8B%EF%BC%8CGPIO%3DGeneral%20Purpose%20Input%20Output%EF%BC%8C%E9%80%9A%E7%94%A8%E8%BE%93%E5%85%A5%E8%BE%93%E5%87%BA%E3%80%82.,%E6%9C%89%E6%97%B6%E5%80%99%E7%AE%80%E7%A7%B0%E4%B8%BA%E2%80%9CIO%E5%8F%A3%E2%80%9D%E3%80%82.%20%E9%80%9A%E7%94%A8%EF%BC%8C%E5%B0%B1%E6%98%AF%E8%AF%B4%E5%AE%83%E6%98%AF%E4%B8%87%E9%87%91%E6%B2%B9%EF%BC%8C%E5%B9%B2%E4%BB%80%E4%B9%88%E9%83%BD%E8%A1%8C%E3%80%82.%20%E8%BE%93%E5%85%A5%E8%BE%93%E5%87%BA%EF%BC%8C%E5%B0%B1%E6%98%AF%E8%AF%B4%E6%97%A2%E8%83%BD%E5%BD%93%E8%BE%93%E5%85%A5%E5%8F%A3%E4%BD%BF%E7%94%A8%EF%BC%8C%E5%8F%88%E8%83%BD%E5%BD%93%E8%BE%93%E5%87%BA%E5%8F%A3%E4%BD%BF%E7%94%A8%E3%80%82.%20%E7%AB%AF%E5%8F%A3%EF%BC%8C%E5%B0%B1%E6%98%AF%E5%85%83%E5%99%A8%E4%BB%B6%E4%B8%8A%E7%9A%84%E4%B8%80%E4%B8%AA%E5%BC%95%E8%84%9A%E3%80%82.%20%E6%80%8E%E4%B9%88%E7%94%A8%EF%BC%9F.%20%E5%86%99%E8%BD%AF%E4%BB%B6%E6%8E%A7%E5%88%B6%E3%80%82.">硬件工程师必看：GPIO用法大汇总 - 知乎 (zhihu.com)</a></p>
</li>
</ul>
</li>
<li><p>UART（串口通信）</p>
<ul>
<li><p><strong>名词解释：</strong> 串口，首先是”串“，意思是串行，将一长串数据切成一个一个0和1，每次发送一位——可以想象一下十字路口车子通过红绿灯的场景。“口”，则表示两边需要相互连接好，就像车辆不能逆行，同一组串口也只有一组通路（导线）互相连接，才能实现通信。</p>
</li>
<li><p>（<strong>热知识：</strong> 同理，并行的意思就是，一次性发送全部数据，可以在一次被读取，可以想象一下赛马时所有马一起出闸的场景）</p>
</li>
<li><p><strong>应用场景：</strong> 像C语言中，我们使用printf向屏幕打印信息。串口则可以通过CH340模块和计算机连接，向计算机发送信息，也能像scanf一样从计算机中读取信息（但是用法差异较大，这里方便理解）。当然，串口也可以用在单片机对单片机，单片机对模块的通信当中。</p>
</li>
<li><p><strong>不推荐的推荐阅读：</strong> <a target="_blank" rel="noopener" href="https://zhuanlan.zhihu.com/p/136806005">串口通信（UART）介绍 - 知乎 (zhihu.com)</a>——不建议现在阅读</p>
</li>
</ul>
</li>
<li><p>ADC（模拟-数字转换器）</p>
<ul>
<li><p><strong>名词解释：</strong> 将一个电压值转换成一个数字值，把它理解为单片机上自带的电压表就行。</p>
</li>
<li><p><strong>热知识：</strong> STM32中，只能测0-3.3V的电压。</p>
</li>
<li><p><strong>应用场景：</strong> 你用电压表做的事情它都可以做——求电阻两端电压并计算出电流<em>等</em>……</p>
</li>
</ul>
</li>
<li><p>各类通信接口：I2C,SPI等：</p>
<ul>
<li><p><strong>名词解释：</strong> 可以理解为电脑上的USB接口，雷电接口，用来和其他设备通信。而I2C，SPI是这些接口的通信标准/协议，单片机用这些接口和其他模块进行通信。</p>
</li>
<li><p><strong>热知识：</strong> 以后再说</p>
</li>
<li><p><strong>应用场景</strong>： 可以用他们为单片机连接一块屏幕，显示你需要的内容；连接其他协议相同的模块，指挥它们工作。</p>
</li>
</ul>
</li>
<li><p>TIM（定时器）：</p>
<ul>
<li><p><strong>名词解释</strong>：就像你定了一个闹钟提醒你做事一样，单片机中定时器也会计时一段时间，然后触发它去做某些事情。</p>
</li>
<li><p><strong>应用场景：</strong> 像我们“点灯”时，也可以使用定时器，在计数到一定时间时去点灯。但是在“等待”定时器周期时，单片机也可以忙其他事情，有效提高了效率。</p>
</li>
</ul>
</li>
<li><p><strong>其他：</strong> 单片机还有很多强力功能，希望后来大家能在科协把他们实践出来。</p>
</li>
</ul>
<h2 id="一些软件的学习建议"><a href="#一些软件的学习建议" class="headerlink" title="一些软件的学习建议"></a>一些软件的学习建议</h2><ul>
<li><p>bilibili大学: </p>
<ul>
<li><p><a target="_blank" rel="noopener" href="https://www.bilibili.com/video/BV1m7411H7oT?share_source=copy_web&amp;vd_source=56e06834c0dfb1f67392b50d18e1c704">【小蜜蜂笔记】基于STM32CubeMX的嵌入式开发基础教程</a></p>
</li>
<li><p>↑这是讲的最基础最细的教程哦。但是它使用的按键/LED等可能和你的开发板上的引脚号并不一样，组会上已经教过大家如何看原理图了。</p>
</li>
<li><p>同样推荐：<a target="_blank" rel="noopener" href="https://www.bilibili.com/video/BV18X4y1M763?share_source=copy_web&amp;vd_source=56e06834c0dfb1f67392b50d18e1c704">【野火】STM32 HAL库开发实战指南 教学视频 手把手教学STM32全系列 零基础入门CubeMX+HAL库，基于野火全系列STM32开发板</a>——讲的会更贴近原理</p>
</li>
</ul>
</li>
<li><p>多多尝试，不明白的多找我们学长们：我，胡哥，铃兰，包括群里的其他软件人。</p>
</li>
<li><p>多去科协，多去才能多调，多调才能熟练，也能收获学长学姐们手把手的指导。</p>
</li>
<li><p>多看手册——目前来看还是太难，算了。但是绝没有坏处，很多技术细节都在手册当中。</p>
</li>
</ul>

      
    </div>

    
    
    
      <footer class="post-footer">
        <div class="post-eof"></div>
      </footer>
  </article>
  
  
  

      
  
  
  <article itemscope itemtype="http://schema.org/Article" class="post-block" lang="zh-Hans">
    <link itemprop="mainEntityOfPage" href="https://malossov.top/2022/09/18/ProgramLearn/1st_GroupMeet/1st-sofr&shop/">

    <span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
      <meta itemprop="image" content="/uploads/avator.png">
      <meta itemprop="name" content="MALossov">
      <meta itemprop="description" content="是很菜的人的很菜的博客捏，无栈工程学徒ing。">
    </span>

    <span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
      <meta itemprop="name" content="MAL'S_BLOG">
    </span>
      <header class="post-header">
        <h2 class="post-title" itemprop="name headline">
          
            <a href="/2022/09/18/ProgramLearn/1st_GroupMeet/1st-sofr&shop/" class="post-title-link" itemprop="url">STM32配套软件的推荐安装和器件购买</a>
        </h2>

        <div class="post-meta">
            <span class="post-meta-item">
              <span class="post-meta-item-icon">
                <i class="far fa-calendar"></i>
              </span>
              <span class="post-meta-item-text">Posted on</span>
              

              <time title="Created: 2022-09-18 04:00:53 / Modified: 23:19:44" itemprop="dateCreated datePublished" datetime="2022-09-18T04:00:53+08:00">2022-09-18</time>
            </span>
            <span class="post-meta-item">
              <span class="post-meta-item-icon">
                <i class="far fa-folder"></i>
              </span>
              <span class="post-meta-item-text">In</span>
                <span itemprop="about" itemscope itemtype="http://schema.org/Thing">
                  <a href="/categories/%E7%A1%AC%E4%BB%B6/" itemprop="url" rel="index"><span itemprop="name">硬件</span></a>
                </span>
            </span>

          

        </div>
      </header>

    
    
    
    <div class="post-body" itemprop="articleBody">

      
          <h1 id="STM32配套软件的推荐安装和器件购买"><a href="#STM32配套软件的推荐安装和器件购买" class="headerlink" title="STM32配套软件的推荐安装和器件购买"></a>STM32配套软件的推荐安装和器件购买</h1><h2 id="软件的推荐安装"><a href="#软件的推荐安装" class="headerlink" title="软件的推荐安装"></a>软件的推荐安装</h2><p>首先下载群内精华消息中的压缩包：</p>
<ul>
<li><p><a target="_blank" rel="noopener" href="https://uestc.feishu.cn/file/boxcnHEySUk5UQ2ojX3klAOjsDf">飞书软件下载</a></p>
</li>
<li><p><a target="_blank" rel="noopener" href="https://pan.baidu.com/s/1Br-fBQeU70qXQHp_3hbdTA?pwd=eeuv">百度网盘下载</a>  提取码：eeuv </p>
</li>
</ul>
<p>然后解压这个压缩包之后，你会发现如下目录↓</p>
<p><strong>其中，圈出为红字的就是我们需要安装的软件。</strong></p>
<p><img src="/2022/09/18/ProgramLearn/1st_GroupMeet/1st-sofr&shop/2022-09-18-22-47-46-U{WAZ_C$NNH_W5PX92S7XTA.png" alt></p>
<p>接下来，我会分别介绍这些软件是做什么的。</p>
<p><strong>至于安装教程？——最下面那个软件初步就是我们的安装教程。</strong></p>
<ul>
<li><p><strong>01-MDK535</strong> :就是学长口中常说的KEIL，是用来编译单片机程序和进行程序的下载、调试的。</p>
</li>
<li><p><strong>06-CUBE MX</strong>：是用来简化配置工程过程，进行单片机相关功能配置、生成工程文件的的。</p>
</li>
</ul>
<blockquote>
<p>简单来说：如果写单片机程序是炒一盘菜。</p>
<ul>
<li><p>CUBE MX，就是洗菜、切菜的菜刀。</p>
</li>
<li><p>KEIL就是把菜炒成菜的锅。</p>
</li>
</ul>
</blockquote>
<ul>
<li><p><strong>04&amp;07-串口套件</strong>：04是一个串口驱动，08是能让电脑显示串口信息的上位机。</p>
</li>
<li><p><strong>08- CUBE PROGRAMMER</strong>:可以进行有高级设置的程序下载。（目前阶段用的不是很多）</p>
</li>
<li><p><strong>软件初步</strong>：教你安装软件的视频！</p>
</li>
<li><p>其他：</p>
<ul>
<li><p><strong>09 &amp; 10</strong> 硬件要用的，等宋羽学长讲。</p>
</li>
<li><p>其他：暂时不用</p>
</li>
</ul>
</li>
</ul>
<hr>
<h2 id="器件购买"><a href="#器件购买" class="headerlink" title="器件购买"></a>器件购买</h2><p>以管理员胡哥发表的器件购买指南为准：</p>
<ul>
<li><p>两种开发板，选一个就行：<del>芯片型号都是一样的，只需要注意原理图差异</del></p>
<ul>
<li><p><strong>基础版（便宜一点18.5）</strong>：选择c8T6未焊排针或者已焊排针<br><a target="_blank" rel="noopener" href="https://m.tb.cn/h.U1qyBQx?tk=l6co2wUpd7I CZ3457">【淘宝】「STM32F103C8T6单片机开发板 最小系统板 C6T6核心板 ARM实验板」</a></p>
</li>
<li><p><strong>高级版（好用33）</strong>：<br><a target="_blank" rel="noopener" href="https://m.tb.cn/h.Ubxu8kp?tk=SJDW2wULuRy CZ3457">【淘宝】「【优信电子】STM32F103C8T6单片机核心板 STM32开发板/M3」</a></p>
</li>
</ul>
</li>
<li><p>STlink下载器：选择可升级固件版本22元<br><a target="_blank" rel="noopener" href="https://m.tb.cn/h.UYt1mc5?tk=QwTx2wULMdB CZ3457">【淘宝】「ST-LINK V2 STM8/STM32仿真器编程器 stlink下载器线烧录器调试器」</a> </p>
</li>
<li><p>CH340串口转USB 5元<br>  <a target="_blank" rel="noopener" href="https://m.tb.cn/h.UYt1r4U?tk=qRQa2wULr2s CZ0001">【淘宝】「USB转TTL CH340模块 USB转串口 单片机下载线 刷机线板 升级小板」</a> </p>
</li>
</ul>
<hr>
<p>↑以上器件的作用：</p>
<ol>
<li><p><strong>最小系统板</strong>：单片机主要的开发平台，本质上就是<strong>芯片+必要电路+排针</strong>，用来快速验证我们需要验证的功能。</p>
</li>
<li><p><strong>ST-LINK</strong>：下载器、调试器，作用就是把程序下载到单片机中，也能调试程序的运行。没有它，你无法下载程序。</p>
</li>
<li><p><strong>CH340</strong>:用来串口通信，可以让单片机向你的电脑打印hello-world!</p>
</li>
</ol>
<hr>
<ul>
<li><p>STLINK和单片机如何连接：<a target="_blank" rel="noopener" href="https://blog.csdn.net/qq_44454169/article/details/101357331">(123条消息) st-link与STM32连接_辣鸡工程猿的博客-CSDN博客_stlink连接stm32</a></p>
</li>
<li><p>CH340与单片机如何连接：<a target="_blank" rel="noopener" href="https://www.zhihu.com/question/371737388">(89 封私信 / 73 条消息) 自带Ch340的设备，怎样与单片机TTL连接？ - 知乎 (zhihu.com)</a></p>
</li>
</ul>

      
    </div>

    
    
    
      <footer class="post-footer">
        <div class="post-eof"></div>
      </footer>
  </article>
  
  
  

      
  
  
  <article itemscope itemtype="http://schema.org/Article" class="post-block" lang="zh-Hans">
    <link itemprop="mainEntityOfPage" href="https://malossov.top/2022/09/08/ProgramLearn/UbunUse/UbuntuApps/">

    <span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
      <meta itemprop="image" content="/uploads/avator.png">
      <meta itemprop="name" content="MALossov">
      <meta itemprop="description" content="是很菜的人的很菜的博客捏，无栈工程学徒ing。">
    </span>

    <span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
      <meta itemprop="name" content="MAL'S_BLOG">
    </span>
      <header class="post-header">
        <h2 class="post-title" itemprop="name headline">
          
            <a href="/2022/09/08/ProgramLearn/UbunUse/UbuntuApps/" class="post-title-link" itemprop="url">Untitled</a>
        </h2>

        <div class="post-meta">
            <span class="post-meta-item">
              <span class="post-meta-item-icon">
                <i class="far fa-calendar"></i>
              </span>
              <span class="post-meta-item-text">Posted on</span>
              

              <time title="Created: 2022-09-08 00:54:53 / Modified: 00:56:58" itemprop="dateCreated datePublished" datetime="2022-09-08T00:54:53+08:00">2022-09-08</time>
            </span>

          

        </div>
      </header>

    
    
    
    <div class="post-body" itemprop="articleBody">

      
          <p><strong>重要提醒：阅读本章节前，你应该学会使用apt和dpkg作为包管理工具。恩好。</strong></p>
<h2 id="WPS"><a href="#WPS" class="headerlink" title="WPS"></a>WPS</h2><p>在网上有很多让你重新安装openssl的方法，我表示很坏，容易卸载掉依赖，很容易炸，尤其是dpkg解决不了直接用了aptitude/apt的情况下。正解请看：</p>
<p>解决方法分两步:<br>第一步, 给WPS的安装目录设置<code>777</code>的权限[必须]</p>
<figure class="highlight sh"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">sudo <span class="built_in">chmod</span> 0777 -R  /opt/kingsoft/wps-office</span><br></pre></td></tr></table></figure>
<p>第二步, 删除之前WPS的安装设置[必须]</p>
<figure class="highlight sh"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">rm</span> -rf  ~/.config/Kingsoft/</span><br></pre></td></tr></table></figure>
<p>在最新版本的Ubuntu中已经解决了这个问题。</p>
<h2 id="UBUNTU下的QQ"><a href="#UBUNTU下的QQ" class="headerlink" title="UBUNTU下的QQ"></a>UBUNTU下的QQ</h2><p>星火商店作死把自己作没了，真要看QQ还的看：<a target="_blank" rel="noopener" href="https://github.com/Icalingua-plus-plus/Icalingua-plus-plus/releases/">Icalingua++</a></p>
<p>这个可以配合mysql一块装着玩玩，主要是mysql不容易卡，sqlite容易祭。</p>
<h2 id="搜狗输入法"><a href="#搜狗输入法" class="headerlink" title="搜狗输入法"></a>搜狗输入法</h2><p>按照搜狗官方来就行，ibus可以装个扩展：ibus tweaks加上导入词库用，但是还是不方便，删了好。【22.04按照20.04进行安装】</p>
<p>可以和Windows下一样进行细胞词库的添加，但是无法进行皮肤的安装，打包方式不一样。</p>
<ul>
<li>如果配置界面出不来，按<code>Alt+F7</code> 可以将窗口拉回正常位置。</li>
</ul>
<p><strong>注意：</strong> 搜狗输入法如果在英伟达显卡的电脑下依赖英伟达显卡驱动，在系统升级后有可能出现输入法消失，此时需要按照我之前说过的方法进行显卡驱动的重新安装和配置，而不是瞎折腾。</p>
<h2 id="Mysql"><a href="#Mysql" class="headerlink" title="Mysql"></a>Mysql</h2><p>主要是当时做项目的时候离不开，现在写一下也无妨。</p>
<ol>
<li><p>首先进入MySQL数据库的官网：<a target="_blank" rel="noopener" href="https://dev.mysql.com/downloads/">MySQL :: MySQL Community Downloads</a></p>
</li>
<li><p>下载apt repository的包，添加PPA之后可以进行mysql的安装。</p>
</li>
<li><p>使用方法见官方：<a target="_blank" rel="noopener" href="https://dev.mysql.com/doc/mysql-apt-repo-quick-guide/en/">MySQL :: A Quick Guide to Using the MySQL APT Repository</a></p>
</li>
<li><p>有的时候如果安装过程中跳不出密码选择，参照这里：</p>
</li>
</ol>
<figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">sudo mysql -uroot</span><br><span class="line"><span class="meta prompt_"># </span><span class="language-bash">初始无需密码登录，登录后：</span></span><br><span class="line">alter user &#x27;root&#x27;@&#x27;localhost&#x27; identified with mysql_native_password by &#x27;新密码&#x27;;</span><br></pre></td></tr></table></figure>
<h2 id="DBeaver，VSCode-Idea-Clion……"><a href="#DBeaver，VSCode-Idea-Clion……" class="headerlink" title="DBeaver，VSCode,Idea,Clion……"></a>DBeaver，VSCode,Idea,Clion……</h2><p>不建议用snap安装，首先是更新的时候还是.deb包，其次是输入法有时有问题，建议直接官网下包。</p>
<p>Jet系的加个环境变量就行，tar.gz装着奇怪用着还行。</p>
<h2 id="立创EDA俩"><a href="#立创EDA俩" class="headerlink" title="立创EDA俩"></a>立创EDA俩</h2><p>终于把他们那个菲拉不堪的安装脚本整好了，现在能一步装，原来还要加权什么的。</p>
<h2 id="网易云音乐"><a href="#网易云音乐" class="headerlink" title="网易云音乐"></a>网易云音乐</h2><p>有官方linux支持版本，但是一年没更新就落后了。具体操作见：<a target="_blank" rel="noopener" href="https://blog.csdn.net/qq_35628698/article/details/124815037">Ubuntu22.04运行网易云音乐错误_weinigb的博客-CSDN博客_ubuntu网易云音乐打不开</a></p>
<p>当然，更好看的第三方是很多的，比如YesPlayMusic，具体安装可以见Github。</p>
<h2 id="Node-js"><a href="#Node-js" class="headerlink" title="Node.js"></a>Node.js</h2><p>推荐版本16 同时使用snap安装</p>

      
    </div>

    
    
    
      <footer class="post-footer">
        <div class="post-eof"></div>
      </footer>
  </article>
  
  
  

      
  
  
  <article itemscope itemtype="http://schema.org/Article" class="post-block" lang="zh-Hans">
    <link itemprop="mainEntityOfPage" href="https://malossov.top/2022/09/06/ProgramLearn/UbunUse/UbunSet/">

    <span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
      <meta itemprop="image" content="/uploads/avator.png">
      <meta itemprop="name" content="MALossov">
      <meta itemprop="description" content="是很菜的人的很菜的博客捏，无栈工程学徒ing。">
    </span>

    <span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
      <meta itemprop="name" content="MAL'S_BLOG">
    </span>
      <header class="post-header">
        <h2 class="post-title" itemprop="name headline">
          
            <a href="/2022/09/06/ProgramLearn/UbunUse/UbunSet/" class="post-title-link" itemprop="url">Ubuntu系统的构建和美化</a>
        </h2>

        <div class="post-meta">
            <span class="post-meta-item">
              <span class="post-meta-item-icon">
                <i class="far fa-calendar"></i>
              </span>
              <span class="post-meta-item-text">Posted on</span>

              <time title="Created: 2022-09-06 04:00:53" itemprop="dateCreated datePublished" datetime="2022-09-06T04:00:53+08:00">2022-09-06</time>
            </span>
              <span class="post-meta-item">
                <span class="post-meta-item-icon">
                  <i class="far fa-calendar-check"></i>
                </span>
                <span class="post-meta-item-text">Edited on</span>
                <time title="Modified: 2022-09-08 00:57:01" itemprop="dateModified" datetime="2022-09-08T00:57:01+08:00">2022-09-08</time>
              </span>
            <span class="post-meta-item">
              <span class="post-meta-item-icon">
                <i class="far fa-folder"></i>
              </span>
              <span class="post-meta-item-text">In</span>
                <span itemprop="about" itemscope itemtype="http://schema.org/Thing">
                  <a href="/categories/%E7%8E%AF%E5%A2%83/" itemprop="url" rel="index"><span itemprop="name">环境</span></a>
                </span>
            </span>

          

        </div>
      </header>

    
    
    
    <div class="post-body" itemprop="articleBody">

      
          <p><strong>重要提醒：阅读本章节前，你应该学会使用apt和dpkg作为包管理工具。同时知道ubuntu下开启终端的快捷键，并且能够自己阅读报错解决冲突。恩好。</strong></p>
<h1 id="UBUNTU——从装完到装死"><a href="#UBUNTU——从装完到装死" class="headerlink" title="UBUNTU——从装完到装死"></a>UBUNTU——从装完到装死</h1><h2 id="系统安装"><a href="#系统安装" class="headerlink" title="系统安装"></a>系统安装</h2><p>主要参考这篇，注意一定要关闭安全启动，同时安装的时候选择空的盘符进行安装。<a target="_blank" rel="noopener" href="https://www.baiyunxitong.com/jiaocheng/7081.html">Ubuntu系统22.04 LTS安装|U盘安装Ubuntu 22.04系统_白云一键重装系统</a></p>
<p>装完之后系统很丑，不截图了 真的丑。</p>
<h2 id="系统美化"><a href="#系统美化" class="headerlink" title="系统美化"></a>系统美化</h2><ol>
<li><p>美化开始前，安装WattToolkit，在这部分当中互联网上没有教程。自我总结如下：</p>
<ol>
<li><p>首先按照官方的提示敲入命令，之后重启软件，此时443端口能够开放连接。</p>
</li>
<li><p><strong>但是！但是！</strong> 你会发现浏览器仍然上不去网，问就是证书还没有签。</p>
</li>
<li><p>这个时候需要用到<code>openssl</code> 进行证书的自签，否则加速无法生效。具体教程参考：（在一般情况下，证书会在：<code>~/.local/share/Steam++/SteamTools.Certificate.pem</code>）</p>
</li>
</ol>
<figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">openssl x509 -in 证书名.cer -out 证书名.pem</span><br><span class="line">openssl x509 -outform der -in 证书名.pem -out 证书名.crt</span><br><span class="line">sudo cp 证书名.crt /usr/local/share/ca-certificates/证书名.crt</span><br><span class="line">sudo update-ca-certificates </span><br></pre></td></tr></table></figure>
<pre><code> 4. 同理，当遇到浏览器不安全时，同样按照对应浏览器方法添加`.crt` 后缀的证书。
</code></pre></li>
<li><p>至此，可以通过<code>WattToolkit</code> 进行github的加速，方便我们进行后续主题的添加。这里建议使用<strong>Hosts模式</strong> 进行加速，不容易影响系统的socket连接。</p>
</li>
<li><p>接下来更换系统的源配置，注意：<strong>并不用使用CSDN上直接改sources.list</strong>的方法，可以直接在软件更新器中进行源的选择：<strong>随便选择一个在中国的源就可以</strong>（我直接选择了<em>位于中国的服务器</em>，当然选择<em>其他服务器-&gt;华为/清华都可以</em>）</p>
<p><img src="/2022/09/06/ProgramLearn/UbunUse/UbunSet/2022-09-04-10-33-45-image.png" alt></p>
</li>
<li><p>现在进行GNOME桌面的美化组建的安装<strong>注意，在这部分当中，CSDN有很大误导作用，在22.04LTS中，已经不存在gnome-tweak-tool这个包</strong> 取而代之的是，我们应当直接使用命令安装优化工具和插件：<code>sudo apt install gnome-tweaks</code></p>
<ol>
<li>注意，在安装插件时，大多数互联网上的教程又错了，很多包冲突。但是，其实也只要再安装3个包即可安装主题美化的解锁：</li>
</ol>
<figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">sudo apt install gnome-shell-extension-manager  </span><br><span class="line">sudo apt install gnome-shell-extensions  </span><br><span class="line">sudo apt install chrome-gnome-shell</span><br></pre></td></tr></table></figure>
<pre><code> 2. 这时，打开启动菜单中的**Extension Manager** 之后选择Browse，安装扩展`User Themes`才能够自主安装我们的主题，此时在”优化“中进行查看，可以看到Shell（即主题)这一项终于被解锁，喜大普奔。![](UbunSet/2022-09-04-10-50-10-image.png)
</code></pre></li>
<li><p>下面正式开始安装主题，我比较喜欢的是模仿Mac的一款，在这里可以查看：<a target="_blank" rel="noopener" href="https://www.pling.com/p/1403328">Mac Big Sur pling</a></p>
<ol>
<li><strong>注意：</strong> 一定要保证完全按照github上的readme进行安装，虽然大部分时候都是直接解压之后-&gt;cd进入目录-&gt;./install，但是特殊情况（比如作者的grub主题）仍然需要谨慎阅读。</li>
</ol>
</li>
<li>可以通过:<a target="_blank" rel="noopener" href="https://extensions.gnome.org/">GNOME Shell Extensions</a> 下载需要的主题。如4中所用的工具一样。不多解释，装上浏览器插件就是很舒服。<ol>
<li>不要使用snap版本的浏览器 比如自带的火狐，问题难以排查。</li>
</ol>
</li>
</ol>
<p>随便装了点，纪念一下美化效果：</p>
<p><img src="/2022/09/06/ProgramLearn/UbunUse/UbunSet/2022-09-04-15-56-27-image.png" alt></p>
<h2 id="接下来是终端的美化"><a href="#接下来是终端的美化" class="headerlink" title="接下来是终端的美化"></a>接下来是终端的美化</h2><p>终端是你吃饭喝水的地方，尤其推荐zsh，默认的bash就是快了点，各种补全等不尽人意。</p>
<p>不太懂，但是完全可以按照这篇文章来做<a target="_blank" rel="noopener" href="https://www.kemaowang.org.cn/n/538955.html">ubuntu美化教程（如何美化你的Ubuntu终端） - 科猫网</a>，不愿意看着打的看这篇：<a target="_blank" rel="noopener" href="https://blog.csdn.net/weixin_44520133/article/details/97110223">ubuntu美化终端_wukuy的博客-CSDN博客_ubuntu终端美化</a>，装上<code>oh-my-zsh</code></p>
<p>同时，<strong>注意，此刻你的用户配置文件由.bashrc转换为.zshrc</strong> ，之后的环境变量需要在<code>.zshrc</code> 当中进行配置。</p>
<p><img src="/2022/09/06/ProgramLearn/UbunUse/UbunSet/2022-09-04-16-25-26-image.png" alt></p>
<p>终端最终的美化效果，其实我觉得挺丑的，有点像kali,笑der.</p>
<h2 id="其他的小问题"><a href="#其他的小问题" class="headerlink" title="其他的小问题"></a>其他的小问题</h2><ul>
<li><p><a target="_blank" rel="noopener" href="https://blog.csdn.net/duapple/article/details/109291029">windows linux双系统 ubuntu开机默认挂载windows分区_duapple的博客-CSDN博客</a> 对系统文件保持慎重，千万不要马虎。不然grub也救不了你。</p>
</li>
<li><p>做完这些之后，可以进行这一部分：<a target="_blank" rel="noopener" href="https://zhuanlan.zhihu.com/p/40434062">Ubuntu和Windows下的双系统字体</a> 主要是考虑到“方块乱麻”和后续使用wps时字体的兼容。</p>
</li>
<li><p><a target="_blank" rel="noopener" href="https://blog.imfing.com/2020/06/ubuntu-18-04-theme-terminal-setup/#%E5%AE%89%E8%A3%85-zsh">Ubuntu 美化与终端配置 - Fing’s Blog</a> 大杂烩 但我觉得好</p>
</li>
</ul>

      
    </div>

    
    
    
      <footer class="post-footer">
        <div class="post-eof"></div>
      </footer>
  </article>
  
  
  

      
  
  
  <article itemscope itemtype="http://schema.org/Article" class="post-block" lang="zh-Hans">
    <link itemprop="mainEntityOfPage" href="https://malossov.top/2022/08/05/ProgramLearn/UbuntuUsage/FuckNvidia/">

    <span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
      <meta itemprop="image" content="/uploads/avator.png">
      <meta itemprop="name" content="MALossov">
      <meta itemprop="description" content="是很菜的人的很菜的博客捏，无栈工程学徒ing。">
    </span>

    <span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
      <meta itemprop="name" content="MAL'S_BLOG">
    </span>
      <header class="post-header">
        <h2 class="post-title" itemprop="name headline">
          
            <a href="/2022/08/05/ProgramLearn/UbuntuUsage/FuckNvidia/" class="post-title-link" itemprop="url">UBUNTU升级22.04.1后由于Nvidia显卡驱动造成的无法登陆和排查方法</a>
        </h2>

        <div class="post-meta">
            <span class="post-meta-item">
              <span class="post-meta-item-icon">
                <i class="far fa-calendar"></i>
              </span>
              <span class="post-meta-item-text">Posted on</span>

              <time title="Created: 2022-08-05 04:00:53" itemprop="dateCreated datePublished" datetime="2022-08-05T04:00:53+08:00">2022-08-05</time>
            </span>
              <span class="post-meta-item">
                <span class="post-meta-item-icon">
                  <i class="far fa-calendar-check"></i>
                </span>
                <span class="post-meta-item-text">Edited on</span>
                <time title="Modified: 2022-08-15 05:28:20" itemprop="dateModified" datetime="2022-08-15T05:28:20+08:00">2022-08-15</time>
              </span>
            <span class="post-meta-item">
              <span class="post-meta-item-icon">
                <i class="far fa-folder"></i>
              </span>
              <span class="post-meta-item-text">In</span>
                <span itemprop="about" itemscope itemtype="http://schema.org/Thing">
                  <a href="/categories/%E7%8E%AF%E5%A2%83/" itemprop="url" rel="index"><span itemprop="name">环境</span></a>
                </span>
            </span>

          

        </div>
      </header>

    
    
    
    <div class="post-body" itemprop="articleBody">

      
          <h2 id="1-遇到的情况"><a href="#1-遇到的情况" class="headerlink" title="1. 遇到的情况"></a>1. 遇到的情况</h2><p>由于Ubuntu在本月不久前发布了22.04的最新patch——22.04.1,按照常理，这意味着22.04这个大版本的生命周期终于来到了较为稳定的阶段，但是个人升级后首先感到的是很多适配等做的并不良好。</p>
<p>在使用这个版本时，我们采用的显卡驱动版本为：</p>
<p><img src="/2022/08/05/ProgramLearn/UbuntuUsage/FuckNvidia/2022-08-15-05-17-25-image.png" alt></p>
<p>在升级前，这个驱动运转良好。而在升级后，系统出现了登录界面无法进入桌面的情况。初步直接排查为该显卡驱动出现问题。</p>
<h2 id="2-解决"><a href="#2-解决" class="headerlink" title="2. 解决"></a>2. 解决</h2><ol>
<li>首先运行命令：</li>
</ol>
<figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">sudo ubuntu-drivers autoinstall</span><br></pre></td></tr></table></figure>
<p>果然安装了几个缺少的nvidia包，但是再重启并键入：<code>nvidia-smi</code>之后，依然显示没有找到驱动，情况并未有得到改善。</p>
<ol>
<li>接着，按照网上的教程，在安装<code>dkms</code>（一般为自带）之后，通过命令查看nvdia驱动具体版本：</li>
</ol>
<figure class="highlight shellsession"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">ls /usr/src | grep nvidia</span><br></pre></td></tr></table></figure>
<p>得到结果为：<strong>5.15.0-41</strong> 再观察以下之前安装的linux-headers的版本，很明显是在大更新中升级了一波系统版本，但是对应的软件包没有升级，于是运行：</p>
<figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">sudo apt-get install linux-headers-5.15.0-41-generic</span><br></pre></td></tr></table></figure>
<p>再次键入<code>uname -a</code>得到</p>
<blockquote>
<p>Linux Air14Plz 5.15.0-41-generic #44-Ubuntu SMP Wed Jun 22 14:20:53 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux</p>
</blockquote>
<p>内核升级完毕</p>
<ol>
<li><strong>Reboot ！</strong> 再次查看驱动情况：</li>
</ol>
<p><img src="/2022/08/05/ProgramLearn/UbuntuUsage/FuckNvidia/2022-08-15-05-24-31-image.png" alt></p>
<p><strong>此帖完结，FUCK NVIDIA！</strong></p>
<p>（PS：没错，这倒霉玩意让我Fcitx4用不了了=搜狗输入法没了，但是并，其实iBus导入词库和预测之后还是挺不错的，放上链接和改字号的插件:</p>
<ul>
<li><p>词库：<a target="_blank" rel="noopener" href="https://gitee.com/mr_allen/ibus-thesaurus">mr_allen/ibus词库</a><a target="_blank" rel="noopener" href="https://gitee.com/mr_allen/ibus-thesaurus">mr_allen/ibus词库</a></p>
</li>
<li><p>改候选字大小的插件：<a target="_blank" rel="noopener" href="https://extensions.gnome.org/extension/2820/ibus-tweaker/">IBus Tweaker - GNOME Shell Extensions</a></p>
</li>
</ul>

      
    </div>

    
    
    
      <footer class="post-footer">
        <div class="post-eof"></div>
      </footer>
  </article>
  
  
  

      
  
  
  <article itemscope itemtype="http://schema.org/Article" class="post-block" lang="zh-Hans">
    <link itemprop="mainEntityOfPage" href="https://malossov.top/2022/05/17/ProgramLearn/Server/BT-Tomcat-JDK/">

    <span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
      <meta itemprop="image" content="/uploads/avator.png">
      <meta itemprop="name" content="MALossov">
      <meta itemprop="description" content="是很菜的人的很菜的博客捏，无栈工程学徒ing。">
    </span>

    <span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
      <meta itemprop="name" content="MAL'S_BLOG">
    </span>
      <header class="post-header">
        <h2 class="post-title" itemprop="name headline">
          
            <a href="/2022/05/17/ProgramLearn/Server/BT-Tomcat-JDK/" class="post-title-link" itemprop="url">配置宝塔桌面，TOMCAT,JDK踩过的一些坑</a>
        </h2>

        <div class="post-meta">
            <span class="post-meta-item">
              <span class="post-meta-item-icon">
                <i class="far fa-calendar"></i>
              </span>
              <span class="post-meta-item-text">Posted on</span>

              <time title="Created: 2022-05-17 04:00:53" itemprop="dateCreated datePublished" datetime="2022-05-17T04:00:53+08:00">2022-05-17</time>
            </span>
              <span class="post-meta-item">
                <span class="post-meta-item-icon">
                  <i class="far fa-calendar-check"></i>
                </span>
                <span class="post-meta-item-text">Edited on</span>
                <time title="Modified: 2022-05-07 00:21:56" itemprop="dateModified" datetime="2022-05-07T00:21:56+08:00">2022-05-07</time>
              </span>
            <span class="post-meta-item">
              <span class="post-meta-item-icon">
                <i class="far fa-folder"></i>
              </span>
              <span class="post-meta-item-text">In</span>
                <span itemprop="about" itemscope itemtype="http://schema.org/Thing">
                  <a href="/categories/%E7%8E%AF%E5%A2%83/" itemprop="url" rel="index"><span itemprop="name">环境</span></a>
                </span>
            </span>

          

        </div>
      </header>

    
    
    
    <div class="post-body" itemprop="articleBody">

      
          <h2 id="关于JDK"><a href="#关于JDK" class="headerlink" title="关于JDK"></a>关于JDK</h2><p>好用：<a target="_blank" rel="noopener" href="https://www.jianshu.com/p/3e162d5c48f1">ubuntu安装JDK17 - 简书 (jianshu.com)</a>——看来是只能用WGET来做了，操作的目录和这一篇一样都在opt目录下</p>
<h2 id="关于无法启动宝塔"><a href="#关于无法启动宝塔" class="headerlink" title="关于无法启动宝塔"></a>关于无法启动宝塔</h2><ul>
<li>一开始的时候以为是内网防火墙没开8888端口<ul>
<li>于是花老力气去Enable了端口：毕竟人家一开始是inactive的：</li>
<li>其实开不开没有必要，没开就是都能访问，后来还是开了，开的步骤见：<ul>
<li><a target="_blank" rel="noopener" href="http://www.shajuta.com/go/330">virtualbox 上ubuntu 20安装宝塔面板- 防火墙ufw - 沙聚塔 (shajuta.com)</a>——这篇文章都被超烂了，内容也不咋地，将就着看吧</li>
<li>而且发现好像除了ufw之外还有另外一个防火墙命令，不太懂，感觉有点混乱</li>
</ul>
</li>
</ul>
</li>
<li>最后解决的办法是：<a target="_blank" rel="noopener" href="https://zhuanlan.zhihu.com/p/468126996">腾讯云服务器宝塔面板8888端口放通安全组设置教程 - 知乎 (zhihu.com)</a><ul>
<li>其实是因为内网的安全组没开，但是现在不叫安全组了，直接在服务器里面找：<strong>防火墙</strong>，不过开准入的步骤是一样的</li>
</ul>
</li>
</ul>
<h2 id="关于换源"><a href="#关于换源" class="headerlink" title="关于换源"></a>关于换源</h2><ul>
<li>其实TX都帮你换好了，都是他自己的源，这一点比较良心，具体参考见：<ul>
<li><a target="_blank" rel="noopener" href="https://zhuanlan.zhihu.com/p/142014944">Ubuntu20.04软件源更换 - 知乎 (zhihu.com)</a></li>
</ul>
</li>
</ul>
<h2 id="关于在宝塔上面配置TOMCAT"><a href="#关于在宝塔上面配置TOMCAT" class="headerlink" title="关于在宝塔上面配置TOMCAT"></a>关于在宝塔上面配置TOMCAT</h2><p>其实也没必要依靠宝塔，但是既来之则安之的事情嘛……<br>还没看，太困了，链接我觉得还行的线放这<br>就是思路有些混乱</p>
<ul>
<li><a target="_blank" rel="noopener" href="https://blog.csdn.net/qq_43162161/article/details/105595496">(83条消息) 宝塔配置tomcat<em>天字第零号的博客-CSDN博客</em>宝塔安装tomcat</a>——很顶</li>
<li><a target="_blank" rel="noopener" href="https://blog.csdn.net/weixin_51560103/article/details/120027343">(83条消息) 通过宝塔面板部署javaweb项目（个人网站，订单管理系统，阿里云服务器，域名访问，mysql数据库）内容具体详细！_打球唔叻。的博客-CSDN博客</a>——过于详细</li>
<li><a target="_blank" rel="noopener" href="https://blog.csdn.net/anxuanzi/article/details/80400217">(83条消息) 【linux教程】宝塔面板下Tomcat+Nginx部署JAVA WEB应用，超详细！！！！！<em>anxuanzi的博客-CSDN博客</em>宝塔tomcat</a>——比较复杂</li>
<li>在虚拟机中外网也许无法访问到tomcat，于是乎：<a target="_blank" rel="noopener" href="https://blog.csdn.net/qq_36935391/article/details/81814505">(85条消息) Tomcat 访问Manager APP报403错误解决方案_飞飞翼的博客-CSDN博客_tomcat403错误</a><ul>
<li><a target="_blank" rel="noopener" href="https://blog.csdn.net/weixin_46017976/article/details/110092801">(85条消息) 进入tomcat manager页面不弹出账号密码框直接401 or 403_Lewis-q398529803的博客-CSDN博客</a></li>
</ul>
</li>
</ul>
<h2 id="关于经常进不去VSCODE的server"><a href="#关于经常进不去VSCODE的server" class="headerlink" title="关于经常进不去VSCODE的server"></a>关于经常进不去VSCODE的server</h2><ul>
<li><a target="_blank" rel="noopener" href="http://www.3fwork.com/kaifa210/002027MYM005560/">[开发工具] vscode ssh连接失败 (3fwork.com)</a></li>
<li>自己不下东西，这个时候，我们直接Kill掉所有带vscode名字的进程就行<ul>
<li>命令为：<code>ps -ef |grep vscode</code></li>
</ul>
</li>
</ul>
<h1 id="更好的TOMCAT配置教程"><a href="#更好的TOMCAT配置教程" class="headerlink" title="更好的TOMCAT配置教程"></a>更好的TOMCAT配置教程</h1><ul>
<li>神文，不解释：<a target="_blank" rel="noopener" href="https://cloud.tencent.com/developer/article/1868474">如何在Ubuntu中安装Apache Tomcat - 云+社区 - 腾讯云 (tencent.com)</a></li>
</ul>

      
    </div>

    
    
    
      <footer class="post-footer">
        <div class="post-eof"></div>
      </footer>
  </article>
  
  
  

      
  
  
  <article itemscope itemtype="http://schema.org/Article" class="post-block" lang="zh-Hans">
    <link itemprop="mainEntityOfPage" href="https://malossov.top/2022/04/16/ProgramLearn/Server/UbuntuOnTencentCloud_1/">

    <span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
      <meta itemprop="image" content="/uploads/avator.png">
      <meta itemprop="name" content="MALossov">
      <meta itemprop="description" content="是很菜的人的很菜的博客捏，无栈工程学徒ing。">
    </span>

    <span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
      <meta itemprop="name" content="MAL'S_BLOG">
    </span>
      <header class="post-header">
        <h2 class="post-title" itemprop="name headline">
          
            <a href="/2022/04/16/ProgramLearn/Server/UbuntuOnTencentCloud_1/" class="post-title-link" itemprop="url">关于拿到了服务器我们应该做什么并且做了什么【1】</a>
        </h2>

        <div class="post-meta">
            <span class="post-meta-item">
              <span class="post-meta-item-icon">
                <i class="far fa-calendar"></i>
              </span>
              <span class="post-meta-item-text">Posted on</span>
              

              <time title="Created: 2022-04-16 04:00:53 / Modified: 05:03:13" itemprop="dateCreated datePublished" datetime="2022-04-16T04:00:53+08:00">2022-04-16</time>
            </span>
            <span class="post-meta-item">
              <span class="post-meta-item-icon">
                <i class="far fa-folder"></i>
              </span>
              <span class="post-meta-item-text">In</span>
                <span itemprop="about" itemscope itemtype="http://schema.org/Thing">
                  <a href="/categories/%E7%8E%AF%E5%A2%83/" itemprop="url" rel="index"><span itemprop="name">环境</span></a>
                </span>
            </span>

          

        </div>
      </header>

    
    
    
    <div class="post-body" itemprop="articleBody">

      
          <h2 id="在哪里找到我们的服务器？"><a href="#在哪里找到我们的服务器？" class="headerlink" title="在哪里找到我们的服务器？"></a>在哪里找到我们的服务器？</h2><ul>
<li>一开始我想当然的以为会在<strong>腾讯云控制台</strong>中，但是搜寻一番之后发现结果不尽人意<ul>
<li>后来想想其实我自己用腾讯翻译API的时候也不是在控制台中</li>
<li>经过求助知乎，发现——</li>
</ul>
</li>
<li>可以参考知乎回答：<a target="_blank" rel="noopener" href="https://www.zhihu.com/question/448478892/answer/1771975432">(54 封私信 / 81 条消息) 腾讯云如何查看自己的服务器? - 知乎 (zhihu.com)</a><ul>
<li>但是<strong>这个之乎回答也是坑，虽然能找到，但是需要鼠标和眼睛寻找的地方还是太多</strong></li>
<li>我发现一个更好的方法：（<em>虽然这个方法并不能够推广，仅仅适用于轻量级的服务器</em>）</li>
<li>略微总结即为：直接访问<strong>轻量级</strong>产品控制台：<a target="_blank" rel="noopener" href="https://console.cloud.tencent.com/lighthouse/instance/index">服务器 - 轻量应用服务器 - 控制台 (tencent.com)</a></li>
<li><img src="/2022/04/16/ProgramLearn/Server/UbuntuOnTencentCloud_1/Pasted%20image%2020220416021934.png" alt="Pasted image 20220416021934.png"></li>
<li>将页面拖到底端可以看到我们订单中创建的服务器</li>
</ul>
</li>
</ul>
<h2 id="如何开始食用我们的服务器"><a href="#如何开始食用我们的服务器" class="headerlink" title="如何开始食用我们的服务器"></a>如何开始食用我们的服务器</h2><p><strong>注意：</strong> 由于咱自己玩过<em>树莓派</em> 所以选择了<strong>Ubuntu 20.04LTS</strong>这一派生于  <strong> Debian</strong> 的操作系统，因为比较能够方便的用<code>apt</code>命令来管理软件包，其他操作系统如：<strong>CentOS</strong>等习惯使用<code>yum</code>命令进行管理的发行版无法兼顾，非常抱歉。</p>
<p>开始使用主要需要面对以下两个需求：</p>
<ol>
<li>如何安装好我们需要的软件</li>
<li>如何做好远程管理的准备</li>
</ol>
<p>由于我们首先需要登录，先从第二点开始：</p>
<h2 id="如何做好远程管理的准备"><a href="#如何做好远程管理的准备" class="headerlink" title="如何做好远程管理的准备"></a>如何做好远程管理的准备</h2><hr>
<h3 id="使用ssh登录"><a href="#使用ssh登录" class="headerlink" title="使用ssh登录"></a>使用ssh登录</h3><h4 id="先修改密码"><a href="#先修改密码" class="headerlink" title="先修改密码"></a>先修改密码</h4><ul>
<li>服务器刚在我们手上的时候的密码是不可知的，需要手动设置，我们选择便于使用秘钥登录的<strong>SSH登录</strong>方法</li>
<li>首先配置密码：<ul>
<li>配置密码需要在<strong>远程登录-&gt;VNC</strong>当中进行，页面如下：</li>
<li><img src="/2022/04/16/ProgramLearn/Server/UbuntuOnTencentCloud_1/Pasted%20image%2020220416022801.png" alt="Pasted image 20220416022801.png"></li>
<li>进行重置密码非常简单，按照要求来即可，请一定要记住自己的密码！</li>
</ul>
</li>
<li>接下来进行ssh登录的准备环节，我们首先使用<strong>PowerShell</strong>对于<code>ssh</code>命令进行测试。<ul>
<li>一般情况下Windows自带该命令，如果没有自带可以求助万能的百度<h4 id="再来看ssh"><a href="#再来看ssh" class="headerlink" title="再来看ssh"></a>再来看ssh</h4></li>
</ul>
</li>
<li>使用<code>ssh</code>命令远程登录的命令在一般使用时的 格式为：<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">ssh [用户名]@[通道地址] -p [端口号]</span><br></pre></td></tr></table></figure></li>
<li>例如：<code>ssh malossov@192.168.0.4 -p 22</code><ul>
<li>一般情况下，端口号默认为<strong>22</strong>我们不必输入</li>
<li>ubuntu系统的默认用户名应该为：ubuntu<br><strong><em>个人观点：在小组合作时不建议修改和创建更多用户，甚至不建议使用su命令进入root身份。因为这样可能导致不同用户创建的文件其他人无法访问和修改，导致各种奇怪的问题，尤其是需要自己搭建自启动的系统服务的时候。</em></strong></li>
</ul>
</li>
<li>我们输入命令后如果是<strong>win10</strong>等版本自带的<strong>Open-ssh</strong>会提示是否保存对该IP的登录信息，我们选择<code>yes</code>：<img src="/2022/04/16/ProgramLearn/Server/UbuntuOnTencentCloud_1/Pasted%20image%2020220416024000.png" alt="Pasted image 20220416024000.png"></li>
<li>接下来会要求输入密码，输入成功后即可进入系统<ul>
<li><strong><em>注意，SHELL下LINUX输入密码一律不会出现字符显示，输入就完了</em></strong></li>
</ul>
</li>
<li><h5 id="恭喜你-已经学会了SSH！"><a href="#恭喜你-已经学会了SSH！" class="headerlink" title="恭喜你 已经学会了SSH！"></a>恭喜你 已经学会了SSH！</h5></li>
</ul>
<p>当然不可能，我们还需要下一步：配置SSH秘钥来让我们的登录变得方便</p>
<hr>
<h4 id="SSH的秘钥配置"><a href="#SSH的秘钥配置" class="headerlink" title="SSH的秘钥配置"></a>SSH的秘钥配置</h4><h5 id="认识秘钥"><a href="#认识秘钥" class="headerlink" title="认识秘钥"></a>认识秘钥</h5><p>首先按照我的理解两句话介绍一下什么是秘钥以及为什么我们需要秘钥：</p>
<ol>
<li>SSH默认采用的密码很不安全，虽然你记着很难受，但其实破译很容易；</li>
<li>所以如果校验秘钥的话就会方便很多，我们在SSH命令的时候就进行秘钥的校验可以更加安全，也更加快速地连接我们的服务器。<br><strong><em>起码在我的个人经验看来，很多时候都是只允许秘钥登录而不允许密码登录的。当然对我个人而言：更多的是不用输入密码可以偷懒</em></strong></li>
</ol>
<h5 id="生成和配置秘钥"><a href="#生成和配置秘钥" class="headerlink" title="生成和配置秘钥"></a>生成和配置秘钥</h5><p><strong>密钥</strong>分为<strong>公钥</strong>和<strong>私钥</strong>两个部分，而这两个部分的运作过程是：</p>
<ol>
<li><strong>公钥</strong>保存在服务器上，<strong>私钥</strong>保存在个人计算机上。</li>
<li>在ssh时，服务器发来数据，个人计算机用<strong>私钥</strong>进行签名后返回服务器进行验证，一致即可登录<br>从上来看，秘钥一定是成对出现的，而且是通过同一台用户计算机生成的，公钥是用户计算机放到服务器上的。</li>
</ol>
<p>这里因为前面已经登陆过服务器，下面使用用户计算机开始生成秘钥，</p>
<ul>
<li><p>在<strong>PowerShell</strong>中使用命令<code>ssh-keygen</code>生成秘钥，默认使用RSA算法进行加密（<em>膜拜杨神，会自己做RSA加密</em>），如果使用<code>-t</code>参数，则可以指定加密算法。<img src="/2022/04/16/ProgramLearn/Server/UbuntuOnTencentCloud_1/Pasted%20image%2020220416030842.png" alt="Pasted image 20220416030842.png"></p>
<ul>
<li>在所有问题的选项中，其实敲<code>Enter</code>就行，主要是相关文件名称和密码保护的，这里默认就行，需要关注的为：<blockquote>
<p><code>Enter file in which to save the key ((C:\Users\MALossov/.ssh/id_rsa)</code></p>
</blockquote>
</li>
</ul>
</li>
<li><p>这行文字表示我们的秘钥保存的地址为我们的用户下的.ssh文件夹，文件名为id_rsa，如果是使用服务器进行生成可以更好地看清这一过程。</p>
<ul>
<li>我们使用<code>ls -a</code>目录可以看到 <strong>.ssh</strong> 这个隐藏文件夹就在我们的用户目录下（<em>LINUX中~表示用户目录（/home/用户名），而上一条windows宏对应的命令输出为：<code>Enter file in which to save the key (/home/ubuntu/.ssh/id_rsa)</code>）</em>——它是对应我们这个用户的ssh秘钥，接下来进行一波查看<img src="/2022/04/16/ProgramLearn/Server/UbuntuOnTencentCloud_1/Pasted%20image%2020220416025743.png" alt="Pasted image 20220416025743.png"></li>
<li>可以发现<strong>公钥</strong>和<strong>私钥</strong>其实是放在同一文件夹下的</li>
<li>如果有必要可以使用<code>chmod</code>命令修改权限防止他人删除或改动</li>
</ul>
</li>
<li>接下来我们要做的，就是<ul>
<li>让公钥保持在服务器上不动作为校验</li>
<li>把私钥下载到自己的电脑上作为ssh的校验方法<ul>
<li>可以使用<code>scp</code>命令的方法，也可以直接使用<code>cat</code>命令的输出进行复制粘贴。</li>
</ul>
</li>
</ul>
</li>
<li>那么如何配置我们复制下来的私钥作为ssh登陆时使用的私钥呢?</li>
<li><p>我们首先要找到我们本地计算机的ssh配置地址：以<code>Windows11</code>为例，为：<em>C:\Users\[用户名]\.ssh</em>        <img src="/2022/04/16/ProgramLearn/Server/UbuntuOnTencentCloud_1/Pasted%20image%2020220416030448.png" alt="Pasted image 20220416030448.png"></p>
<ul>
<li>在这个文件夹下我们取出公钥并上传到服务器的<strong>~/.ssh/</strong>目录下：文件命名称和内容与本次的公钥内容不一致。<ul>
<li>校验文件的命名默认为：<strong>authorized_keys</strong><ul>
<li>【作废】使用命令进行复制：首先复制本地秘钥的内容，<code>cd</code>进入<strong>.shh</strong> 目录，然后使用<code>echo</code>命令直接写入文件    例：<code>echo [公钥内容] &gt; id_rsa.pub</code></li>
</ul>
</li>
<li>↑这里出现了小小的问题，公钥是分为多行的，所以我们采用另外一种办法，使用Ubuntu内置的编辑器<strong>nano</strong></li>
<li>使用方法很简单：输入命令<code>nano authorized_keys</code></li>
<li>进入编辑窗口，复制粘贴完公钥内容之后<ul>
<li>可以直接使用右键复制粘贴</li>
</ul>
</li>
<li>使用快捷键<code>Ctrl+X</code>退出，按照提示保存修改。</li>
</ul>
</li>
</ul>
</li>
<li><p>接下来测试一下，在<strong>PowerShell</strong>中登出用户，重新登录。</p>
<ul>
<li>发现不用输入密码了，秘钥的配置成功</li>
</ul>
</li>
</ul>

      
    </div>

    
    
    
      <footer class="post-footer">
        <div class="post-eof"></div>
      </footer>
  </article>
  
  
  

      
  
  
  <article itemscope itemtype="http://schema.org/Article" class="post-block" lang="zh-Hans">
    <link itemprop="mainEntityOfPage" href="https://malossov.top/2022/02/23/ProgramLearn/Front/Python/">

    <span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
      <meta itemprop="image" content="/uploads/avator.png">
      <meta itemprop="name" content="MALossov">
      <meta itemprop="description" content="是很菜的人的很菜的博客捏，无栈工程学徒ing。">
    </span>

    <span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
      <meta itemprop="name" content="MAL'S_BLOG">
    </span>
      <header class="post-header">
        <h2 class="post-title" itemprop="name headline">
          
            <a href="/2022/02/23/ProgramLearn/Front/Python/" class="post-title-link" itemprop="url">PythonLearning</a>
        </h2>

        <div class="post-meta">
            <span class="post-meta-item">
              <span class="post-meta-item-icon">
                <i class="far fa-calendar"></i>
              </span>
              <span class="post-meta-item-text">Posted on</span>
              

              <time title="Created: 2022-02-23 04:00:53 / Modified: 22:29:09" itemprop="dateCreated datePublished" datetime="2022-02-23T04:00:53+08:00">2022-02-23</time>
            </span>
            <span class="post-meta-item">
              <span class="post-meta-item-icon">
                <i class="far fa-folder"></i>
              </span>
              <span class="post-meta-item-text">In</span>
                <span itemprop="about" itemscope itemtype="http://schema.org/Thing">
                  <a href="/categories/%E5%89%8D%E7%AB%AF/" itemprop="url" rel="index"><span itemprop="name">前端</span></a>
                </span>
            </span>

          

        </div>
      </header>

    
    
    
    <div class="post-body" itemprop="articleBody">

      
          <h2 id="关于Pip"><a href="#关于Pip" class="headerlink" title="关于Pip"></a>关于Pip</h2><ul>
<li>pip的换源：根目录下：<code>～/.pip/pip.conf</code>内容<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">[global]</span><br><span class="line">index-url=http://pypi.douban.com/simple</span><br><span class="line">[install]</span><br><span class="line">trusted-host=pypi.douban.com</span><br></pre></td></tr></table></figure>
</li>
</ul>

      
    </div>

    
    
    
      <footer class="post-footer">
        <div class="post-eof"></div>
      </footer>
  </article>
  
  
  


  
  <nav class="pagination">
    <span class="page-number current">1</span><a class="page-number" href="/page/2/">2</a><span class="space">&hellip;</span><a class="page-number" href="/page/4/">4</a><a class="extend next" rel="next" href="/page/2/"><i class="fa fa-angle-right" aria-label="Next page"></i></a>
  </nav>



          </div>
          

<script>
  window.addEventListener('tabs:register', () => {
    let { activeClass } = CONFIG.comments;
    if (CONFIG.comments.storage) {
      activeClass = localStorage.getItem('comments_active') || activeClass;
    }
    if (activeClass) {
      let activeTab = document.querySelector(`a[href="#comment-${activeClass}"]`);
      if (activeTab) {
        activeTab.click();
      }
    }
  });
  if (CONFIG.comments.storage) {
    window.addEventListener('tabs:click', event => {
      if (!event.target.matches('.tabs-comment .tab-content .tab-pane')) return;
      let commentClass = event.target.classList[1];
      localStorage.setItem('comments_active', commentClass);
    });
  }
</script>

        </div>
          
  
  <div class="toggle sidebar-toggle">
    <span class="toggle-line toggle-line-first"></span>
    <span class="toggle-line toggle-line-middle"></span>
    <span class="toggle-line toggle-line-last"></span>
  </div>

  <aside class="sidebar">
    <div class="sidebar-inner">

      <ul class="sidebar-nav motion-element">
        <li class="sidebar-nav-toc">
          Table of Contents
        </li>
        <li class="sidebar-nav-overview">
          Overview
        </li>
      </ul>

      <!--noindex-->
      <div class="post-toc-wrap sidebar-panel">
      </div>
      <!--/noindex-->

      <div class="site-overview-wrap sidebar-panel">
        <div class="site-author motion-element" itemprop="author" itemscope itemtype="http://schema.org/Person">
    <img class="site-author-image" itemprop="image" alt="MALossov"
      src="/uploads/avator.png">
  <p class="site-author-name" itemprop="name">MALossov</p>
  <div class="site-description" itemprop="description">是很菜的人的很菜的博客捏，无栈工程学徒ing。</div>
</div>
<div class="site-state-wrap motion-element">
  <nav class="site-state">
      <div class="site-state-item site-state-posts">
          <a href="/archives">
          <span class="site-state-item-count">35</span>
          <span class="site-state-item-name">posts</span>
        </a>
      </div>
      <div class="site-state-item site-state-categories">
            <a href="/categories/">
        <span class="site-state-item-count">4</span>
        <span class="site-state-item-name">categories</span></a>
      </div>
      <div class="site-state-item site-state-tags">
            <a href="/tags/">
        <span class="site-state-item-count">29</span>
        <span class="site-state-item-name">tags</span></a>
      </div>
  </nav>
</div>
  <div class="links-of-author motion-element">
      <span class="links-of-author-item">
        <a href="https://github.com/malossov" title="GitHub → https:&#x2F;&#x2F;github.com&#x2F;malossov" rel="noopener" target="_blank"><i class="fab fa-github fa-fw"></i>GitHub</a>
      </span>
      <span class="links-of-author-item">
        <a href="https://www.zhihu.com/people/yi-wan-nzlao-si-ji" title="知乎 → https:&#x2F;&#x2F;www.zhihu.com&#x2F;people&#x2F;yi-wan-nzlao-si-ji" rel="noopener" target="_blank"><i class="fab fa-zhihu fa-fw"></i>知乎</a>
      </span>
      <span class="links-of-author-item">
        <a href="https://gitee.com/malossov" title="Gitee → https:&#x2F;&#x2F;gitee.com&#x2F;malossov" rel="noopener" target="_blank"><i class="fab fa-gitee fa-fw"></i>Gitee</a>
      </span>
  </div>



      </div>

    </div>
  </aside>
  <div id="sidebar-dimmer"></div>


      </div>
    </main>

    <footer class="footer">
      <div class="footer-inner">
        

        
  <div class="beian"><a href="https://beian.miit.gov.cn/" rel="noopener" target="_blank">蜀ICP备2023019138号 </a>
  </div>

<div class="copyright">
  
  &copy; 2022 – 
  <span itemprop="copyrightYear">2023</span>
  <span class="with-love">
    <i class="fa fa-heart"></i>
  </span>
  <span class="author" itemprop="copyrightHolder">MALossov</span>
</div>
  <div class="powered-by">Powered by <a href="https://hexo.io/" class="theme-link" rel="noopener" target="_blank">Hexo</a> & <a href="https://pisces.theme-next.org/" class="theme-link" rel="noopener" target="_blank">NexT.Pisces</a>
  </div>

        








      </div>
    </footer>
  </div>

  
  <script src="/lib/anime.min.js"></script>
  <script src="/lib/velocity/velocity.min.js"></script>
  <script src="/lib/velocity/velocity.ui.min.js"></script>

<script src="/js/utils.js"></script>

<script src="/js/motion.js"></script>


<script src="/js/schemes/pisces.js"></script>


<script src="/js/next-boot.js"></script>


  <script defer src="/lib/three/three.min.js"></script>
    <script defer src="/lib/three/three-waves.min.js"></script>


  













<script>
if (document.querySelectorAll('pre.mermaid').length) {
  NexT.utils.getScript('//cdn.jsdelivr.net/npm/mermaid@8/dist/mermaid.min.js', () => {
    mermaid.initialize({
      theme    : 'forest',
      logLevel : 3,
      flowchart: { curve     : 'linear' },
      gantt    : { axisFormat: '%m/%d/%Y' },
      sequence : { actorMargin: 50 }
    });
  }, window.mermaid);
}
</script>


  

  

  


<!-- 页面点击小红心 -->
<script type="text/javascript" src="/js/src/love.js"></script>
<!-- 背景动画 -->
<script type="text/javascript" src="/js/src/particle.js"></script>


</body>
</html>
